internal SyntaxToken(Roslyn.Compilers.CSharp.SyntaxNode parent, Roslyn.Compilers.CSharp.InternalSyntax.SyntaxToken node, int position, int index) { this.position = position; this.parent = parent; this.node = node; this.index = index; }
public Roslyn.Compilers.CSharp.SyntaxTrivia FindTrivia(int position, Func <Roslyn.Compilers.CSharp.SyntaxTrivia, bool> stepInto) { for (Roslyn.Compilers.CSharp.SyntaxNode node = this; node != null; node = node.Parent) { if (node.FullSpan.Contains(position)) { return(Roslyn.Compilers.CSharp.SyntaxNode.FindTriviaByOffset(node, position - node.position, stepInto)); } } return(new Roslyn.Compilers.CSharp.SyntaxTrivia()); }
private static void GetDirectives <TDirective>(Roslyn.Compilers.CSharp.SyntaxNode node, Func <TDirective, bool> filter, ref List <TDirective> directives) where TDirective : Roslyn.Compilers.CSharp.DirectiveSyntax { if (!node.HasDirectives) { return; } foreach (SyntaxNodeOrToken node1 in node.ChildNodesAndTokens()) { if (node1.HasDirectives) { Roslyn.Compilers.CSharp.SyntaxNode.GetDirectives <TDirective>(node1, filter, ref directives); } } }
public bool EquivalentTo(Roslyn.Compilers.CSharp.SyntaxNode other) { if (this == other) { return(true); } if (other == null) { return(false); } else { return(this.Green.EquivalentTo(other.Green)); } }
internal Roslyn.Compilers.CSharp.SyntaxNode GetRedOnly(ref Roslyn.Compilers.CSharp.SyntaxNode field, int slot) { Roslyn.Compilers.CSharp.SyntaxNode syntaxNode = field; if (syntaxNode == null) { Roslyn.Compilers.CSharp.InternalSyntax.SyntaxNode slot1 = this.Green.GetSlot(slot); if (slot1 != null && !slot1.IsToken) { int childPosition = this.GetChildPosition(slot); syntaxNode = slot1.ToRed(this, childPosition); if (Interlocked.CompareExchange <Roslyn.Compilers.CSharp.SyntaxNode>(ref field, syntaxNode, (Roslyn.Compilers.CSharp.SyntaxNode)null) != null) { syntaxNode = field; } } } return(syntaxNode); }
internal virtual int GetChildPosition(int index) { int num = 0; while (index > 0) { --index; Roslyn.Compilers.CSharp.SyntaxNode cachedSlot = this.GetCachedSlot(index); if (cachedSlot != null) { return(cachedSlot.End + num); } Roslyn.Compilers.CSharp.InternalSyntax.SyntaxNode slot = this.Green.GetSlot(index); if (slot != null) { num += slot.FullWidth; } } return(this.position + num); }
internal AttributeSyntax(Roslyn.Compilers.CSharp.SyntaxNode parent, Roslyn.Compilers.CSharp.InternalSyntax.SyntaxNode green, int position) : base(parent, green, position) { }
internal static Roslyn.Compilers.CSharp.SyntaxTrivia FindTriviaByOffset(Roslyn.Compilers.CSharp.SyntaxNode node, int textOffset, Func <Roslyn.Compilers.CSharp.SyntaxTrivia, bool> stepInto = null) { if (textOffset >= 0) { foreach (SyntaxNodeOrToken syntaxNodeOrToken in node.ChildNodesAndTokens()) { int fullWidth = syntaxNodeOrToken.FullWidth; if (textOffset < fullWidth) { if (syntaxNodeOrToken.IsNode) { return(Roslyn.Compilers.CSharp.SyntaxNode.FindTriviaByOffset(syntaxNodeOrToken.AsNode(), textOffset, stepInto)); } if (syntaxNodeOrToken.IsToken) { Roslyn.Compilers.CSharp.SyntaxToken syntaxToken = syntaxNodeOrToken.AsToken(); int leadingWidth = syntaxToken.LeadingWidth; if (textOffset < syntaxToken.LeadingWidth) { foreach (Roslyn.Compilers.CSharp.SyntaxTrivia syntaxTrivia in syntaxToken.LeadingTrivia) { if (textOffset < syntaxTrivia.FullWidth) { if (syntaxTrivia.HasStructure && stepInto != null && stepInto(syntaxTrivia)) { return(Roslyn.Compilers.CSharp.SyntaxNode.FindTriviaByOffset((Roslyn.Compilers.CSharp.SyntaxNode)syntaxTrivia.GetStructure(), textOffset, stepInto)); } else { return(syntaxTrivia); } } else { textOffset -= syntaxTrivia.FullWidth; } } } else if (textOffset >= leadingWidth + syntaxToken.Width) { textOffset -= leadingWidth + syntaxToken.Width; foreach (Roslyn.Compilers.CSharp.SyntaxTrivia syntaxTrivia in syntaxToken.TrailingTrivia) { if (textOffset < syntaxTrivia.FullWidth) { if (syntaxTrivia.HasStructure && stepInto != null && stepInto(syntaxTrivia)) { return(Roslyn.Compilers.CSharp.SyntaxNode.FindTriviaByOffset((Roslyn.Compilers.CSharp.SyntaxNode)syntaxTrivia.GetStructure(), textOffset, stepInto)); } else { return(syntaxTrivia); } } else { textOffset -= syntaxTrivia.FullWidth; } } } return(new Roslyn.Compilers.CSharp.SyntaxTrivia()); } } textOffset -= fullWidth; } } return(new Roslyn.Compilers.CSharp.SyntaxTrivia()); }
internal SyntaxNode(Roslyn.Compilers.CSharp.SyntaxNode parent, Roslyn.Compilers.CSharp.InternalSyntax.SyntaxNode green, int position) { this.parent = parent; this.Green = green; this.position = position; }
internal IdentifierNameSyntax(Roslyn.Compilers.CSharp.SyntaxNode parent, Roslyn.Compilers.CSharp.InternalSyntax.SyntaxNode green, int position) : base(parent, green, position) { }