Syntax\ChildSyntaxList.cs (13)
37internal static int CountNodes(GreenNode green)
43var child = green.GetSlot(i);
82private static int Occupancy(GreenNode green)
128private static GreenNode FindGreenSlotContainingIndex(
136GreenNode? greenChild;
137var green = node.Green;
189private static GreenNode GetGreenChildAt(SyntaxNode node, int index, ref SlotData slotData)
191var greenSlot = FindGreenSlotContainingIndex(node, index, ref slotData, out _, out var offsetInSlot, out _);
192var result = greenSlot.IsList ? greenSlot.GetSlot(offsetInSlot) : greenSlot;
203var greenChild = FindGreenSlotContainingIndex(node, index, ref slotData, out var slotIndex, out var idx, out var position);
257GreenNode? green = node.Green;
270GreenNode? greenChild = green.GetSlot(slot);
335var greenChild = FindGreenSlotContainingIndex(node, index, ref slotData, out var slotIndex, out var offsetInSlot, out _);
Syntax\GreenNode.cs (52)
44private static readonly ConditionalWeakTable<GreenNode, DiagnosticInfo[]> s_diagnosticsTable =
45new ConditionalWeakTable<GreenNode, DiagnosticInfo[]>();
47private static readonly ConditionalWeakTable<GreenNode, SyntaxAnnotation[]> s_annotationsTable =
48new ConditionalWeakTable<GreenNode, SyntaxAnnotation[]>();
120protected void AdjustFlagsAndWidth(GreenNode node)
170internal abstract GreenNode? GetSlot(int index);
172internal GreenNode GetRequiredSlot(int index)
174var node = GetSlot(index);
195var child = this.GetSlot(i);
236var child = GetSlot(i);
592internal abstract GreenNode SetAnnotations(SyntaxAnnotation[]? annotations);
611internal abstract GreenNode SetDiagnostics(DiagnosticInfo[]? diagnostics);
652var stack = ArrayBuilder<(GreenNode node, bool leading, bool trailing)>.GetInstance();
663ArrayBuilder<(GreenNode node, bool leading, bool trailing)> stack)
668var currentNode = current.node;
689var child = currentNode.GetSlot(i);
701private static int GetFirstNonNullChildIndex(GreenNode node)
707var child = node.GetSlot(firstIndex);
717private static int GetLastNonNullChildIndex(GreenNode node)
723var child = node.GetSlot(lastIndex);
750public virtual GreenNode? GetLeadingTriviaCore() { return null; }
751public virtual GreenNode? GetTrailingTriviaCore() { return null; }
753public virtual GreenNode WithLeadingTrivia(GreenNode? trivia)
758public virtual GreenNode WithTrailingTrivia(GreenNode? trivia)
763internal GreenNode? GetFirstTerminal()
765GreenNode? node = this;
769GreenNode? firstChild = null;
772var child = node.GetSlot(i);
789internal GreenNode? GetLastTerminal()
791GreenNode? node = this;
795GreenNode? lastChild = null;
798var child = node.GetSlot(i);
815internal GreenNode? GetLastNonmissingTerminal()
817GreenNode? node = this;
821GreenNode? nonmissingChild = null;
824var child = node.GetSlot(i);
843public virtual bool IsEquivalentTo([NotNullWhen(true)] GreenNode? other)
858private static bool EquivalentToInternal(GreenNode node1, GreenNode node2)
894var node1Child = node1.GetSlot(i);
895var node2Child = node2.GetSlot(i);
920public static GreenNode? CreateList<TFrom>(IEnumerable<TFrom>? enumerable, Func<TFrom, GreenNode> select)
929public static GreenNode? CreateList<TFrom>(List<TFrom> list, Func<TFrom, GreenNode> select)
943var array = new ArrayElement<GreenNode>[list.Count];
951public static GreenNode? CreateList<TFrom>(IReadOnlyList<TFrom> list, Func<TFrom, GreenNode> select)
965var array = new ArrayElement<GreenNode>[list.Count];
990internal GreenNode AddError(DiagnosticInfo err)
Syntax\InternalSyntax\SyntaxList.cs (27)
13: base(GreenNode.ListKind)
18: base(GreenNode.ListKind, diagnostics, annotations)
22internal static GreenNode List(GreenNode child)
27internal static WithTwoChildren List(GreenNode child0, GreenNode child1)
33GreenNode? cached = SyntaxNodeCache.TryGetNode(GreenNode.ListKind, child0, child1, out hash);
46internal static WithThreeChildren List(GreenNode child0, GreenNode child1, GreenNode child2)
53GreenNode? cached = SyntaxNodeCache.TryGetNode(GreenNode.ListKind, child0, child1, child2, out hash);
66internal static GreenNode List(GreenNode?[] nodes)
71internal static GreenNode List(GreenNode?[] nodes, int count)
73var array = new ArrayElement<GreenNode>[count];
76var node = nodes[i];
84internal static SyntaxList List(ArrayElement<GreenNode>[] children)
98internal abstract void CopyTo(ArrayElement<GreenNode>[] array, int offset);
100internal static GreenNode? Concat(GreenNode? left, GreenNode? right)
118var tmp = new ArrayElement<GreenNode>[left.SlotCount + right.SlotCount];
125var tmp = new ArrayElement<GreenNode>[left.SlotCount + 1];
133var tmp = new ArrayElement<GreenNode>[rightList.SlotCount + 1];
Syntax\InternalSyntax\SyntaxNodeCache.cs (67)
42/// The use of <see cref="GreenNode.RawKind"/>, <see cref="GreenNode.NodeFlags"/> (and any provided child nodes)
102internal static void NoteGreen(GreenNode _)
134/// in <see cref="TryGetNode(int, GreenNode?, out int)"/> for more details.
136private static readonly GreenNode[] s_cache = new GreenNode[CacheSize];
138internal static void AddNode(GreenNode node, int hash)
151private static bool CanBeCached(GreenNode? child1)
156private static bool CanBeCached(GreenNode? child1, GreenNode? child2)
161private static bool CanBeCached(GreenNode? child1, GreenNode? child2, GreenNode? child3)
166private static bool ChildInCache(GreenNode? child)
178private static bool AllChildrenInCache(GreenNode node)
193internal static GreenNode? TryGetNode(int kind, GreenNode? child1, out int hash)
198internal static GreenNode? TryGetNode(int kind, GreenNode? child1, GreenNode.NodeFlags flags, out int hash)
211var e = s_cache[h & CacheMask];
226internal static GreenNode? TryGetNode(int kind, GreenNode? child1, GreenNode? child2, out int hash)
231internal static GreenNode? TryGetNode(int kind, GreenNode? child1, GreenNode? child2, GreenNode.NodeFlags flags, out int hash)
238var e = s_cache[h & CacheMask];
253internal static GreenNode? TryGetNode(int kind, GreenNode? child1, GreenNode? child2, GreenNode? child3, out int hash)
258internal static GreenNode? TryGetNode(int kind, GreenNode? child1, GreenNode? child2, GreenNode? child3, GreenNode.NodeFlags flags, out int hash)
265var e = s_cache[h & CacheMask];
280public static GreenNode.NodeFlags GetDefaultNodeFlags()
282return GreenNode.NodeFlags.IsNotMissing;
285private static int GetCacheHash(int kind, GreenNode.NodeFlags flags, GreenNode? child1)
294private static int GetCacheHash(int kind, GreenNode.NodeFlags flags, GreenNode? child1, GreenNode? child2)
311private static int GetCacheHash(int kind, GreenNode.NodeFlags flags, GreenNode? child1, GreenNode? child2, GreenNode? child3)
334private static bool IsCacheable(GreenNode node)
336return ((node.Flags & GreenNode.NodeFlags.InheritMask) == GreenNode.NodeFlags.IsNotMissing) &&
343internal static int GetCacheHash(GreenNode node)
351var child = node.GetSlot(i);
361private static bool IsCacheEquivalent(GreenNode? parent, int kind, GreenNode.NodeFlags flags, GreenNode? child1)
374private static bool IsCacheEquivalent(GreenNode? parent, int kind, GreenNode.NodeFlags flags, GreenNode? child1, GreenNode? child2)
388private static bool IsCacheEquivalent(GreenNode? parent, int kind, GreenNode.NodeFlags flags, GreenNode? child1, GreenNode? child2, GreenNode? child3)
Syntax\SyntaxNode.Iterators.cs (8)
31Func<GreenNode, bool>? descendIntoChildrenGreen,
64private readonly Func<GreenNode, bool>? _descendIntoChildrenGreen;
78Func<GreenNode, bool>? descendIntoChildrenGreen,
231Func<GreenNode, bool>? descendIntoChildrenGreen,
326Func<GreenNode, bool>? descendIntoChildrenGreen,
449private bool ShouldYieldSelf(bool includeSelf, in TextSpan span, Func<GreenNode, bool>? descendIntoChildrenGreen)
454Func<GreenNode, bool>? descendIntoChildrenGreen,
487Func<GreenNode, bool>? descendIntoChildrenGreen,
Syntax\SyntaxToken.cs (8)
29internal SyntaxToken(SyntaxNode? parent, GreenNode? token, int position, int index)
39internal SyntaxToken(GreenNode? token)
78internal GreenNode? Node { get; }
80internal GreenNode RequiredNode
429var leading = Node.GetLeadingTriviaCore();
436var trailingGreen = Node.GetTrailingTriviaCore();
480? new SyntaxToken(null, Node.WithLeadingTrivia(GreenNode.CreateList(trivia, static t => t.RequiredUnderlyingNode)), position: 0, index: 0)
506? new SyntaxToken(null, Node.WithTrailingTrivia(GreenNode.CreateList(trivia, static t => t.RequiredUnderlyingNode)), position: 0, index: 0)
Syntax\SyntaxTokenList.cs (12)
29internal SyntaxTokenList(SyntaxNode? parent, GreenNode? tokenOrList, int position, int index)
73private static GreenNode? CreateNodeFromSpan(ReadOnlySpan<SyntaxToken> tokens)
84var copy = new ArrayElement<GreenNode>[tokens.Length];
93private static GreenNode? CreateNode(IEnumerable<SyntaxToken> tokens)
110internal GreenNode? Node { get; }
256internal void CopyTo(int offset, GreenNode?[] array, int arrayOffset, int count)
269private GreenNode? GetGreenNodeAt(int i)
278private static GreenNode? GetGreenNodeAt(GreenNode node, int i)
375return new SyntaxTokenList(null, GreenNode.CreateList(list, static n => n.RequiredNode), 0, 0);
391return new SyntaxTokenList(null, GreenNode.CreateList(list, static n => n.RequiredNode), 0, 0);
437return new SyntaxTokenList(null, GreenNode.CreateList(list, static n => n.RequiredNode), 0, 0);
Syntax\SyntaxTriviaList.cs (10)
29internal SyntaxTriviaList(in SyntaxToken token, GreenNode? node, int position, int index = 0)
37internal SyntaxTriviaList(in SyntaxToken token, GreenNode? node)
79private static GreenNode? CreateNodeFromSpan(ReadOnlySpan<SyntaxTrivia> trivias)
90var copy = new ArrayElement<GreenNode>[trivias.Length];
101internal GreenNode? Node { get; }
373return new SyntaxTriviaList(default(SyntaxToken), GreenNode.CreateList(list, static n => n.RequiredUnderlyingNode), 0, 0);
419return new SyntaxTriviaList(default(SyntaxToken), GreenNode.CreateList(list, static n => n.RequiredUnderlyingNode), 0, 0);
451private GreenNode? GetGreenNodeAt(int i)
457private static GreenNode? GetGreenNodeAt(GreenNode node, int i)