Update to new Upsilon diagnostics system
This commit is contained in:
parent
7c57e8363b
commit
19c3efb6c2
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -77,14 +77,9 @@ namespace UpsilonLanguageServer
|
||||||
|
|
||||||
private static Diagnostic ConvertToVsCodeDiagnostic(DiagnosticsMessage message)
|
private static Diagnostic ConvertToVsCodeDiagnostic(DiagnosticsMessage message)
|
||||||
{
|
{
|
||||||
var (startPosition, startPositionOnLine) = message.GetStartLine();
|
|
||||||
var (endPosition, endPositionOnLine) = message.GetEndLine();
|
|
||||||
var sourceString = message.Diagnostics.ScriptString;
|
var sourceString = message.Diagnostics.ScriptString;
|
||||||
if (endPosition >= sourceString.GetLineCount())
|
var range = new Range(message.Span.StartLine, message.Span.StartPosition, message.Span.EndLine,
|
||||||
endPosition = sourceString.GetLineCount();
|
message.Span.EndPosition);
|
||||||
|
|
||||||
var range = new Range(startPosition, startPositionOnLine, endPosition,
|
|
||||||
endPositionOnLine);
|
|
||||||
|
|
||||||
DiagnosticSeverity severity;
|
DiagnosticSeverity severity;
|
||||||
switch (message.DiagnosticLevel)
|
switch (message.DiagnosticLevel)
|
||||||
|
|
|
@ -27,8 +27,7 @@ namespace UpsilonLanguageServer.Services
|
||||||
{
|
{
|
||||||
if (doc.Bound != null && doc.SourceText != null)
|
if (doc.Bound != null && doc.SourceText != null)
|
||||||
{
|
{
|
||||||
var linePos = doc.SourceText.GetLineStartPos(position.Line);
|
var findNode = doc.Bound.GetBottomNodeAtPosition(position.Line, position.Character);
|
||||||
var findNode = doc.Bound.GetBottomNodeAtPosition(linePos + position.Character);
|
|
||||||
if (findNode != null)
|
if (findNode != null)
|
||||||
{
|
{
|
||||||
var contents = new StringBuilder($"Kind: {findNode.Kind}");
|
var contents = new StringBuilder($"Kind: {findNode.Kind}");
|
||||||
|
@ -79,8 +78,7 @@ namespace UpsilonLanguageServer.Services
|
||||||
await doc.WaitForDocumentBound();
|
await doc.WaitForDocumentBound();
|
||||||
if (doc.Bound != null && doc.SourceText != null)
|
if (doc.Bound != null && doc.SourceText != null)
|
||||||
{
|
{
|
||||||
var linePos = doc.SourceText.GetLineStartPos(position.Line);
|
var findNode = doc.Bound.GetBottomNodeAtPosition(position.Line, position.Character);
|
||||||
var findNode = doc.Bound.GetBottomNodeAtPosition(linePos + position.Character);
|
|
||||||
if (findNode != null)
|
if (findNode != null)
|
||||||
{
|
{
|
||||||
if (findNode.Kind == BoundKind.BoundFunctionCallExpression)
|
if (findNode.Kind == BoundKind.BoundFunctionCallExpression)
|
||||||
|
@ -172,9 +170,7 @@ namespace UpsilonLanguageServer.Services
|
||||||
if (doc.Bound == null)
|
if (doc.Bound == null)
|
||||||
return new CompletionList(new CompletionItem[0], false);
|
return new CompletionList(new CompletionItem[0], false);
|
||||||
|
|
||||||
var linePos = doc.SourceText.GetLineStartPos(position.Line);
|
using (var nodeIterator = doc.Bound.GetNodeAtPosition(position.Line, position.Character).GetEnumerator())
|
||||||
var characterPosition = linePos + position.Character;
|
|
||||||
using (var nodeIterator = doc.Bound.GetNodeAtPosition(characterPosition).GetEnumerator())
|
|
||||||
{
|
{
|
||||||
if (nodeIterator.MoveNext())
|
if (nodeIterator.MoveNext())
|
||||||
{
|
{
|
||||||
|
@ -197,7 +193,7 @@ namespace UpsilonLanguageServer.Services
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var scope = doc.Bound.GetScopeAt(characterPosition);
|
var scope = doc.Bound.GetScopeAt(position.Line, position.Character);
|
||||||
var variables = scope.GetBoundScopeVisibleVariables();
|
var variables = scope.GetBoundScopeVisibleVariables();
|
||||||
if (scope != null)
|
if (scope != null)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue