Syntax\GreenNode.cs (62)
34private static readonly ConditionalWeakTable<GreenNode, DiagnosticInfo[]> s_diagnosticsTable =
35new ConditionalWeakTable<GreenNode, DiagnosticInfo[]>();
37private static readonly ConditionalWeakTable<GreenNode, SyntaxAnnotation[]> s_annotationsTable =
38new ConditionalWeakTable<GreenNode, SyntaxAnnotation[]>();
106protected void AdjustFlagsAndWidth(GreenNode node)
160internal abstract GreenNode? GetSlot(int index);
162internal GreenNode GetRequiredSlot(int index)
164var node = GetSlot(index);
180var child = this.GetSlot(i);
198internal IEnumerable<GreenNode> EnumerateNodes()
214var current = en.Current;
246var child = GetSlot(i);
609internal abstract GreenNode SetAnnotations(SyntaxAnnotation[]? annotations);
628internal abstract GreenNode SetDiagnostics(DiagnosticInfo[]? diagnostics);
657var stack = ArrayBuilder<(GreenNode node, bool leading, bool trailing)>.GetInstance();
668ArrayBuilder<(GreenNode node, bool leading, bool trailing)> stack)
673var currentNode = current.node;
694var child = currentNode.GetSlot(i);
706private static int GetFirstNonNullChildIndex(GreenNode node)
712var child = node.GetSlot(firstIndex);
722private static int GetLastNonNullChildIndex(GreenNode node)
728var child = node.GetSlot(lastIndex);
755public virtual GreenNode? GetLeadingTriviaCore() { return null; }
756public virtual GreenNode? GetTrailingTriviaCore() { return null; }
758public virtual GreenNode WithLeadingTrivia(GreenNode? trivia)
763public virtual GreenNode WithTrailingTrivia(GreenNode? trivia)
768internal GreenNode? GetFirstTerminal()
770GreenNode? node = this;
774GreenNode? firstChild = null;
777var child = node.GetSlot(i);
790internal GreenNode? GetLastTerminal()
792GreenNode? node = this;
796GreenNode? lastChild = null;
799var child = node.GetSlot(i);
812internal GreenNode? GetLastNonmissingTerminal()
814GreenNode? node = this;
818GreenNode? nonmissingChild = null;
821var child = node.GetSlot(i);
837public virtual bool IsEquivalentTo([NotNullWhen(true)] GreenNode? other)
852private static bool EquivalentToInternal(GreenNode node1, GreenNode node2)
888var node1Child = node1.GetSlot(i);
889var node2Child = node2.GetSlot(i);
914public static GreenNode? CreateList<TFrom>(IEnumerable<TFrom>? enumerable, Func<TFrom, GreenNode> select)
923public static GreenNode? CreateList<TFrom>(List<TFrom> list, Func<TFrom, GreenNode> select)
937var array = new ArrayElement<GreenNode>[list.Count];
945public static GreenNode? CreateList<TFrom>(IReadOnlyList<TFrom> list, Func<TFrom, GreenNode> select)
959var array = new ArrayElement<GreenNode>[list.Count];
985this.SlotCount <= GreenNode.MaxCachedChildNum;
997var child = GetSlot(i);
1007internal bool IsCacheEquivalent(int kind, NodeFlags flags, GreenNode? child1)
1016internal bool IsCacheEquivalent(int kind, NodeFlags flags, GreenNode? child1, GreenNode? child2)
1026internal bool IsCacheEquivalent(int kind, NodeFlags flags, GreenNode? child1, GreenNode? child2, GreenNode? child3)
1046internal GreenNode AddError(DiagnosticInfo err)
Syntax\InternalSyntax\SyntaxList.cs (27)
13: base(GreenNode.ListKind)
18: base(GreenNode.ListKind, diagnostics, annotations)
27internal static GreenNode List(GreenNode child)
32internal static WithTwoChildren List(GreenNode child0, GreenNode child1)
38GreenNode? cached = SyntaxNodeCache.TryGetNode(GreenNode.ListKind, child0, child1, out hash);
51internal static WithThreeChildren List(GreenNode child0, GreenNode child1, GreenNode child2)
58GreenNode? cached = SyntaxNodeCache.TryGetNode(GreenNode.ListKind, child0, child1, child2, out hash);
71internal static GreenNode List(GreenNode?[] nodes)
76internal static GreenNode List(GreenNode?[] nodes, int count)
78var array = new ArrayElement<GreenNode>[count];
81var node = nodes[i];
89internal static SyntaxList List(ArrayElement<GreenNode>[] children)
103internal abstract void CopyTo(ArrayElement<GreenNode>[] array, int offset);
105internal static GreenNode? Concat(GreenNode? left, GreenNode? right)
123var tmp = new ArrayElement<GreenNode>[left.SlotCount + right.SlotCount];
130var tmp = new ArrayElement<GreenNode>[left.SlotCount + 1];
138var tmp = new ArrayElement<GreenNode>[rightList.SlotCount + 1];
Syntax\InternalSyntax\SyntaxNodeCache.cs (44)
90internal static void NoteGreen(GreenNode _)
120public readonly GreenNode? node;
122internal Entry(int hash, GreenNode node)
131internal static void AddNode(GreenNode node, int hash)
144private static bool CanBeCached(GreenNode? child1)
149private static bool CanBeCached(GreenNode? child1, GreenNode? child2)
154private static bool CanBeCached(GreenNode? child1, GreenNode? child2, GreenNode? child3)
159private static bool ChildInCache(GreenNode? child)
171private static bool AllChildrenInCache(GreenNode node)
186internal static GreenNode? TryGetNode(int kind, GreenNode? child1, out int hash)
191internal static GreenNode? TryGetNode(int kind, GreenNode? child1, GreenNode.NodeFlags flags, out int hash)
214internal static GreenNode? TryGetNode(int kind, GreenNode? child1, GreenNode? child2, out int hash)
219internal static GreenNode? TryGetNode(int kind, GreenNode? child1, GreenNode? child2, GreenNode.NodeFlags flags, out int hash)
242internal static GreenNode? TryGetNode(int kind, GreenNode? child1, GreenNode? child2, GreenNode? child3, out int hash)
247internal static GreenNode? TryGetNode(int kind, GreenNode? child1, GreenNode? child2, GreenNode? child3, GreenNode.NodeFlags flags, out int hash)
270public static GreenNode.NodeFlags GetDefaultNodeFlags()
272return GreenNode.NodeFlags.IsNotMissing;
275private static int GetCacheHash(int kind, GreenNode.NodeFlags flags, GreenNode? child1)
284private static int GetCacheHash(int kind, GreenNode.NodeFlags flags, GreenNode? child1, GreenNode? child2)
301private static int GetCacheHash(int kind, GreenNode.NodeFlags flags, GreenNode? child1, GreenNode? child2, GreenNode? child3)
Syntax\SyntaxToken.cs (8)
31internal SyntaxToken(SyntaxNode? parent, GreenNode? token, int position, int index)
41internal SyntaxToken(GreenNode? token)
80internal GreenNode? Node { get; }
82internal GreenNode RequiredNode
431var leading = Node.GetLeadingTriviaCore();
438var trailingGreen = Node.GetTrailingTriviaCore();
482? new SyntaxToken(null, Node.WithLeadingTrivia(GreenNode.CreateList(trivia, static t => t.RequiredUnderlyingNode)), position: 0, index: 0)
508? new SyntaxToken(null, Node.WithTrailingTrivia(GreenNode.CreateList(trivia, static t => t.RequiredUnderlyingNode)), position: 0, index: 0)
Syntax\SyntaxTokenList.cs (12)
26internal SyntaxTokenList(SyntaxNode? parent, GreenNode? tokenOrList, int position, int index)
62private static GreenNode? CreateNode(SyntaxToken[] tokens)
74var node = tokens[i].Node;
82private static GreenNode? CreateNode(IEnumerable<SyntaxToken> tokens)
99internal GreenNode? Node { get; }
245internal void CopyTo(int offset, GreenNode?[] array, int arrayOffset, int count)
258private GreenNode? GetGreenNodeAt(int i)
267private static GreenNode? GetGreenNodeAt(GreenNode node, int i)
364return new SyntaxTokenList(null, GreenNode.CreateList(list, static n => n.RequiredNode), 0, 0);
380return new SyntaxTokenList(null, GreenNode.CreateList(list, static n => n.RequiredNode), 0, 0);
426return new SyntaxTokenList(null, GreenNode.CreateList(list, static n => n.RequiredNode), 0, 0);
Syntax\SyntaxTriviaList.cs (9)
26internal SyntaxTriviaList(in SyntaxToken token, GreenNode? node, int position, int index = 0)
34internal SyntaxTriviaList(in SyntaxToken token, GreenNode? node)
68private static GreenNode? CreateNode(SyntaxTrivia[]? trivias)
82internal GreenNode? Node { get; }
354return new SyntaxTriviaList(default(SyntaxToken), GreenNode.CreateList(list, static n => n.RequiredUnderlyingNode), 0, 0);
400return new SyntaxTriviaList(default(SyntaxToken), GreenNode.CreateList(list, static n => n.RequiredUnderlyingNode), 0, 0);
432private GreenNode? GetGreenNodeAt(int i)
438private static GreenNode? GetGreenNodeAt(GreenNode node, int i)