internal SyntaxToken(SyntaxKind kind, SyntaxKind contextualKind, bool isMissing, SourceRange sourceRange, string text, object value, IEnumerable <SyntaxNode> leadingTrivia, IEnumerable <SyntaxNode> trailingTrivia, IEnumerable <Diagnostic> diagnostics) : base(kind, diagnostics) { ContextualKind = contextualKind; IsMissing = isMissing; Text = text; SourceRange = sourceRange; Value = value; LeadingTrivia = leadingTrivia.ToImmutableArray(); foreach (var triviaNode in LeadingTrivia) { ((SyntaxNodeBase)triviaNode).Parent = this; } TrailingTrivia = trailingTrivia.ToImmutableArray(); foreach (var triviaNode in TrailingTrivia) { ((SyntaxNodeBase)triviaNode).Parent = this; } FullSourceRange = ComputeFullSpan(sourceRange, LeadingTrivia, TrailingTrivia); ContainsDiagnostics = Diagnostics.Any() || LeadingTrivia.Any(x => x.ContainsDiagnostics) || TrailingTrivia.Any(x => x.ContainsDiagnostics); }
internal SyntaxToken(PretokenizedSyntaxToken pretokenizedToken, SourceLocation position) : base((SyntaxKind)pretokenizedToken.RawKind, ConvertDiagnostics(pretokenizedToken.Diagnostics, position)) { ContextualKind = (SyntaxKind)pretokenizedToken.RawContextualKind; Text = pretokenizedToken.Text; Value = pretokenizedToken.Value; SourceRange = new SourceRange(position + pretokenizedToken.LeadingTriviaWidth, pretokenizedToken.Width); FullSourceRange = new SourceRange(position, pretokenizedToken.FullWidth); var triviaPosition = position; var convertedLeadingTrivia = new List <SyntaxNode>(); foreach (var trivia in pretokenizedToken.LeadingTrivia) { convertedLeadingTrivia.Add(new SyntaxTrivia( (SyntaxKind)trivia.RawKind, trivia.Text, new SourceRange(triviaPosition, trivia.FullWidth), ConvertDiagnostics(trivia.Diagnostics, triviaPosition))); triviaPosition += trivia.FullWidth; } LeadingTrivia = convertedLeadingTrivia.ToImmutableArray(); triviaPosition = SourceRange.End; var convertedTrailingTrivia = new List <SyntaxNode>(); foreach (var trivia in pretokenizedToken.TrailingTrivia) { convertedTrailingTrivia.Add(new SyntaxTrivia( (SyntaxKind)trivia.RawKind, trivia.Text, new SourceRange(triviaPosition, trivia.FullWidth), ConvertDiagnostics(trivia.Diagnostics, triviaPosition))); triviaPosition += trivia.FullWidth; } TrailingTrivia = convertedTrailingTrivia.ToImmutableArray(); ContainsDiagnostics = Diagnostics.Any() || LeadingTrivia.Any(x => x.ContainsDiagnostics) || TrailingTrivia.Any(x => x.ContainsDiagnostics); }
internal SyntaxToken(SyntaxKind kind, SyntaxKind contextualKind, bool isMissing, SourceRange sourceRange, TextSpan span, string text, object value, IEnumerable <SyntaxNode> leadingTrivia, IEnumerable <SyntaxNode> trailingTrivia, IEnumerable <Diagnostic> diagnostics, MacroReference macroReference, bool isFirstTokenInMacroExpansion) : base(kind, text, span, diagnostics) { ContextualKind = contextualKind; IsMissing = isMissing; SourceRange = sourceRange; Value = value; LeadingTrivia = leadingTrivia.ToImmutableArray(); foreach (var triviaNode in LeadingTrivia) { triviaNode.Parent = this; } TrailingTrivia = trailingTrivia.ToImmutableArray(); foreach (var triviaNode in TrailingTrivia) { triviaNode.Parent = this; } FullSourceRange = ComputeFullSpan(sourceRange, LeadingTrivia, TrailingTrivia); ContainsDiagnostics = Diagnostics.Any() || LeadingTrivia.Any(x => x.ContainsDiagnostics) || TrailingTrivia.Any(x => x.ContainsDiagnostics); ContainsDirectives = LeadingTrivia.OfType <DirectiveTriviaSyntax>().Any() || TrailingTrivia.OfType <DirectiveTriviaSyntax>().Any(); MacroReference = macroReference; IsFirstTokenInMacroExpansion = isFirstTokenInMacroExpansion; }