Jump to definition

This commit is contained in:
nub31
2025-10-23 14:16:23 +02:00
parent 53cb8b9cc0
commit acc38ad8ff
4 changed files with 125 additions and 6 deletions

View File

@@ -41,6 +41,32 @@ public static class AstExtensions
return false;
}
public static FuncNode? FunctionAtPosition(this CompilationUnit compilationUnit, int line, int character)
{
return compilationUnit
.Functions
.FirstOrDefault(x => x.ContainsPosition(line, character));
}
public static Node? DeepestNodeAtPosition(this CompilationUnit compilationUnit, int line, int character)
{
return compilationUnit.Functions
.SelectMany(x => x.EnumerateDescendantsAndSelf())
.Where(n => n.ContainsPosition(line, character))
.OrderBy(n => n.Tokens.First().Span.Start.Line)
.ThenBy(n => n.Tokens.First().Span.Start.Column)
.LastOrDefault();
}
public static Node? DeepestNodeAtPosition(this Node node, int line, int character)
{
return node.EnumerateDescendantsAndSelf()
.Where(n => n.ContainsPosition(line, character))
.OrderBy(n => n.Tokens.First().Span.Start.Line)
.ThenBy(n => n.Tokens.First().Span.Start.Column)
.LastOrDefault();
}
public static IEnumerable<Node> EnumerateDescendantsAndSelf(this Node node)
{
yield return node;