Пример #1
0
 protected void RegisterChildNodes <T>(out SeparatedSyntaxList <T> nodes, SeparatedSyntaxList <T> values)
     where T : SyntaxNode
 {
     nodes = values;
     foreach (var childNode in values.GetWithSeparators())
     {
         SourceRange     = SourceRange.Union(SourceRange, childNode.SourceRange);
         FullSourceRange = SourceRange.Union(FullSourceRange, childNode.FullSourceRange);
         ChildNodes.Add(childNode);
         childNode.Parent = this;
     }
 }
Пример #2
0
        private static SourceRange ComputeFullSpan(SourceRange span, ImmutableArray <SyntaxNode> leadingTrivia, ImmutableArray <SyntaxNode> trailingTrivia)
        {
            var result = span;

            foreach (var childNode in leadingTrivia)
            {
                result = SourceRange.Union(result, childNode.FullSourceRange);
            }
            foreach (var childNode in trailingTrivia)
            {
                result = SourceRange.Union(result, childNode.FullSourceRange);
            }
            return(result);
        }
Пример #3
0
 protected void RegisterChildNode <T>(out T node, T value)
     where T : SyntaxNode
 {
     if (value == null)
     {
         node = null;
         return;
     }
     SourceRange     = SourceRange.Union(SourceRange, value.SourceRange);
     FullSourceRange = SourceRange.Union(FullSourceRange, value.FullSourceRange);
     node            = value;
     ChildNodes.Add(node);
     node.Parent = this;
 }
Пример #4
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;
        }
Пример #5
0
 public SyntaxToken WithSpan(SourceRange sourceRange, TextSpan span)
 {
     return(new SyntaxToken(Kind, ContextualKind, IsMissing, sourceRange, span, Text, Value, LeadingTrivia, TrailingTrivia, Diagnostics, MacroReference, IsFirstTokenInMacroExpansion));
 }
Пример #6
0
 internal SyntaxTrivia(SyntaxKind kind, string text, SourceRange sourceRange, TextSpan span, ImmutableArray <Diagnostic> diagnostics)
     : base(kind, text, span, diagnostics)
 {
     SourceRange     = sourceRange;
     FullSourceRange = sourceRange;
 }