Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
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;
        }