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; } }
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); }
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; }
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; }
public SyntaxToken WithSpan(SourceRange sourceRange, TextSpan span) { return(new SyntaxToken(Kind, ContextualKind, IsMissing, sourceRange, span, Text, Value, LeadingTrivia, TrailingTrivia, Diagnostics, MacroReference, IsFirstTokenInMacroExpansion)); }
internal SyntaxTrivia(SyntaxKind kind, string text, SourceRange sourceRange, TextSpan span, ImmutableArray <Diagnostic> diagnostics) : base(kind, text, span, diagnostics) { SourceRange = sourceRange; FullSourceRange = sourceRange; }