Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
 public override IEnumerable <DirectiveTriviaSyntax> GetDirectives()
 {
     return(LeadingTrivia.OfType <DirectiveTriviaSyntax>().Union(TrailingTrivia.OfType <DirectiveTriviaSyntax>()));
 }