Пример #1
0
        public void ParseRemainder(SyntaxListBuilder <XmlNodeSyntax> nodes)
        {
            bool endTag = this.CurrentToken.Kind == SyntaxKind.LessThanSlashToken;

            var saveMode = this.SetMode(LexMode.XmlCDataSectionText);

            var textTokens = this.pool.Allocate();

            try
            {
                while (this.CurrentToken.Kind != SyntaxKind.EndOfDocumentationCommentToken)
                {
                    var token = this.EatToken();

                    // TODO: It is possible that a non-literal gets in here. ]]>, specifically. Is that ok?
                    textTokens.Add(token);
                }

                var allRemainderText      = Syntax.XmlText(textTokens.ToTokenList());
                XmlParseErrorArgument arg = endTag
                    ? new XmlParseErrorArgument(XmlParseErrorCode.XML_EndTagNotExpected)
                    : new XmlParseErrorArgument(XmlParseErrorCode.XML_ExpectedEndOfXml);

                allRemainderText = allRemainderText.WithAdditionalDiagnostics(this.MakeError(0, 1, ErrorCode.WRN_XMLParseError, arg));

                nodes.Add(allRemainderText);
            }
            finally
            {
                this.pool.Free(textTokens);
            }

            this.ResetMode(saveMode);
        }
Пример #2
0
        private SyntaxToken WithXmlParseError(SyntaxToken node, XmlParseErrorCode code, params string[] args)
        {
            XmlParseErrorArgument arg = new XmlParseErrorArgument(code, args);

            return(node.WithAdditionalDiagnostics(this.MakeError(0, node.Width, ErrorCode.WRN_XMLParseError, arg)));
        }
Пример #3
0
        private TNode WithXmlParseError <TNode>(TNode node, XmlParseErrorCode code, params string[] args) where TNode : SyntaxNode
        {
            XmlParseErrorArgument arg = new XmlParseErrorArgument(code, args);

            return((TNode)node.WithAdditionalDiagnostics(this.MakeError(0, node.Width, ErrorCode.WRN_XMLParseError, arg)));
        }