Syntax\GreenNode.cs (60)
43private static readonly ConditionalWeakTable<GreenNode, DiagnosticInfo[]> s_diagnosticsTable =
44new ConditionalWeakTable<GreenNode, DiagnosticInfo[]>();
46private static readonly ConditionalWeakTable<GreenNode, SyntaxAnnotation[]> s_annotationsTable =
47new ConditionalWeakTable<GreenNode, SyntaxAnnotation[]>();
115protected void AdjustFlagsAndWidth(GreenNode node)
165internal abstract GreenNode? GetSlot(int index);
167internal GreenNode GetRequiredSlot(int index)
169var node = GetSlot(index);
190var child = this.GetSlot(i);
231var child = GetSlot(i);
587internal abstract GreenNode SetAnnotations(SyntaxAnnotation[]? annotations);
606internal abstract GreenNode SetDiagnostics(DiagnosticInfo[]? diagnostics);
635var stack = ArrayBuilder<(GreenNode node, bool leading, bool trailing)>.GetInstance();
646ArrayBuilder<(GreenNode node, bool leading, bool trailing)> stack)
651var currentNode = current.node;
672var child = currentNode.GetSlot(i);
684private static int GetFirstNonNullChildIndex(GreenNode node)
690var child = node.GetSlot(firstIndex);
700private static int GetLastNonNullChildIndex(GreenNode node)
706var child = node.GetSlot(lastIndex);
733public virtual GreenNode? GetLeadingTriviaCore() { return null; }
734public virtual GreenNode? GetTrailingTriviaCore() { return null; }
736public virtual GreenNode WithLeadingTrivia(GreenNode? trivia)
741public virtual GreenNode WithTrailingTrivia(GreenNode? trivia)
746internal GreenNode? GetFirstTerminal()
748GreenNode? node = this;
752GreenNode? firstChild = null;
755var child = node.GetSlot(i);
772internal GreenNode? GetLastTerminal()
774GreenNode? node = this;
778GreenNode? lastChild = null;
781var child = node.GetSlot(i);
798internal GreenNode? GetLastNonmissingTerminal()
800GreenNode? node = this;
804GreenNode? nonmissingChild = null;
807var child = node.GetSlot(i);
826public virtual bool IsEquivalentTo([NotNullWhen(true)] GreenNode? other)
841private static bool EquivalentToInternal(GreenNode node1, GreenNode node2)
877var node1Child = node1.GetSlot(i);
878var node2Child = node2.GetSlot(i);
903public static GreenNode? CreateList<TFrom>(IEnumerable<TFrom>? enumerable, Func<TFrom, GreenNode> select)
912public static GreenNode? CreateList<TFrom>(List<TFrom> list, Func<TFrom, GreenNode> select)
926var array = new ArrayElement<GreenNode>[list.Count];
934public static GreenNode? CreateList<TFrom>(IReadOnlyList<TFrom> list, Func<TFrom, GreenNode> select)
948var array = new ArrayElement<GreenNode>[list.Count];
974this.SlotCount <= GreenNode.MaxCachedChildNum;
986var child = GetSlot(i);
996internal bool IsCacheEquivalent(int kind, NodeFlags flags, GreenNode? child1)
1006internal bool IsCacheEquivalent(int kind, NodeFlags flags, GreenNode? child1, GreenNode? child2)
1017internal bool IsCacheEquivalent(int kind, NodeFlags flags, GreenNode? child1, GreenNode? child2, GreenNode? child3)
1038internal 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 (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)
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)