// Process a token. and add to the list of triva/tokens we're accumulating. public void AddToken(SyntaxToken token, bool isFirst, bool isLast) { bool isMissing = token.IsMissing; if (token.HasLeadingTrivia && (isFirst || isMissing || token.GetLeadingTrivia().TriviaListContainsStructuredTrivia())) { FinishInProgressTokens(); AddTrivia(token.GetLeadingTrivia()); token = ((SyntaxToken)token.WithLeadingTrivia(null)); } ////if (!preserveExistingDiagnostics) ////{ //// token = token.WithoutDiagnostics(); ////} SyntaxNode trailingTrivia = null; if (token.HasTrailingTrivia && (isLast || isMissing || token.GetTrailingTrivia().TriviaListContainsStructuredTrivia())) { trailingTrivia = token.GetTrailingTrivia(); token = ((SyntaxToken)token.WithTrailingTrivia(null)); } if (isMissing) { // Don't add missing tokens to skipped tokens, but preserve their diagnostics. ////if (token.ContainsDiagnostics()) ////{ //// // Move diagnostics on missing token to next token. //// if (diagnosticsToAdd != null) //// { //// diagnosticsToAdd = diagnosticsToAdd.Concat(token.GetDiagnostics()); //// } //// else //// { //// diagnosticsToAdd = token.GetDiagnostics(); //// } //// addDiagnosticsToFirstTokenOnly = true; ////} } else { skippedTokensBuilder.Add(token); } if (trailingTrivia != null) { FinishInProgressTokens(); AddTrivia(trailingTrivia); } if (isFirst && addDiagnosticsToFirstTokenOnly) { FinishInProgressTokens(); // implicitly adds the diagnostics. } }
public virtual void VisitLeadingTrivia(SyntaxToken token) { if (token.HasLeadingTrivia) { foreach (var trivia in token.GetLeadingTrivia()) { VisitTrivia(trivia); } } }
public static SyntaxToken AddNodesAsLeadingTrivia(this SyntaxToken token, params SyntaxNode[] nodes) { var trivia = nodes.ConvertToTriviaList(); return(token.WithLeadingTrivia(SyntaxList.Concat(trivia, token.GetLeadingTrivia()))); }
// Ignore everything after the 128th character by setting the value text of the token // from the prefix. This is for backwards compatibility with Dev 10. private static SyntaxToken TruncateIdentifier(SyntaxToken identifier) { if (identifier.Width > MAX_DIRECTIVE_IDENTIFIER_WIDTH) { var leading = identifier.GetLeadingTrivia(); var trailing = identifier.GetTrailingTrivia(); string text = identifier.ToString(); string identifierPart = text.Substring(0, MAX_DIRECTIVE_IDENTIFIER_WIDTH); identifier = SyntaxFactory.Identifier(SyntaxKind.IdentifierToken, leading, text, identifierPart, trailing); } return identifier; }
private void PushToken(SyntaxToken token) { var trailing = token.GetTrailingTrivia(); if (trailing != null) { this.Push(trailing); } this.Push(token); var leading = token.GetLeadingTrivia(); if (leading != null) { this.Push(leading); } }