This commit is contained in:
nub31
2025-11-03 12:52:17 +01:00
parent 40d500fddd
commit 085f7a1a6a
17 changed files with 368 additions and 190 deletions

View File

@@ -1,4 +1,5 @@
using NubLang.Ast;
using NubLang.Syntax;
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
using Range = OmniSharp.Extensions.LanguageServer.Protocol.Models.Range;
@@ -20,6 +21,47 @@ public static class AstExtensions
};
}
public static Location ToLocation(this Token token)
{
return new Location
{
Uri = token.Span.FilePath,
Range = new Range(token.Span.Start.Line - 1, token.Span.Start.Column - 1, token.Span.End.Line - 1, token.Span.End.Column - 1)
};
}
public static bool ContainsPosition(this Token token, int line, int character)
{
var start = token.Span.Start;
var end = token.Span.End;
var startLine = start.Line - 1;
var startChar = start.Column - 1;
var endLine = end.Line - 1;
var endChar = end.Column - 1;
if (line < startLine || line > endLine) return false;
if (line > startLine && line < endLine) return true;
if (startLine == endLine)
{
return character >= startChar && character <= endChar;
}
if (line == startLine)
{
return character >= startChar;
}
if (line == endLine)
{
return character <= endChar;
}
return false;
}
public static bool ContainsPosition(this Node node, int line, int character)
{
if (node.Tokens.Count == 0)