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); }
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))); }
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))); }