diff --git a/EmmyLua/CodeAnalysis/Diagnostics/Handlers/DiagnosticHandlerBase.cs b/EmmyLua/CodeAnalysis/Diagnostics/Checkers/DiagnosticCheckerBase.cs similarity index 70% rename from EmmyLua/CodeAnalysis/Diagnostics/Handlers/DiagnosticHandlerBase.cs rename to EmmyLua/CodeAnalysis/Diagnostics/Checkers/DiagnosticCheckerBase.cs index 0c42be46..c84d1e88 100644 --- a/EmmyLua/CodeAnalysis/Diagnostics/Handlers/DiagnosticHandlerBase.cs +++ b/EmmyLua/CodeAnalysis/Diagnostics/Checkers/DiagnosticCheckerBase.cs @@ -1,8 +1,8 @@ using EmmyLua.CodeAnalysis.Compilation; -namespace EmmyLua.CodeAnalysis.Diagnostics.Handlers; +namespace EmmyLua.CodeAnalysis.Diagnostics.Checkers; -public abstract class DiagnosticHandlerBase(LuaCompilation compilation, List codes) +public abstract class DiagnosticCheckerBase(LuaCompilation compilation, List codes) { public LuaCompilation Compilation { get; } = compilation; diff --git a/EmmyLua/CodeAnalysis/Diagnostics/Handlers/TypeCheckHandler.cs b/EmmyLua/CodeAnalysis/Diagnostics/Checkers/TypeChecker.cs similarity index 61% rename from EmmyLua/CodeAnalysis/Diagnostics/Handlers/TypeCheckHandler.cs rename to EmmyLua/CodeAnalysis/Diagnostics/Checkers/TypeChecker.cs index 9263dc36..a5c3dea8 100644 --- a/EmmyLua/CodeAnalysis/Diagnostics/Handlers/TypeCheckHandler.cs +++ b/EmmyLua/CodeAnalysis/Diagnostics/Checkers/TypeChecker.cs @@ -1,8 +1,8 @@ using EmmyLua.CodeAnalysis.Compilation; -namespace EmmyLua.CodeAnalysis.Diagnostics.Handlers; +namespace EmmyLua.CodeAnalysis.Diagnostics.Checkers; -public class TypeCheckHandler(LuaCompilation compilation) : DiagnosticHandlerBase(compilation, []) +public class TypeChecker(LuaCompilation compilation) : DiagnosticCheckerBase(compilation, []) { public override void Check(DiagnosticContext context) { diff --git a/EmmyLua/CodeAnalysis/Diagnostics/Handlers/UndefinedGlobalHandler.cs b/EmmyLua/CodeAnalysis/Diagnostics/Checkers/UndefinedGlobalChecker.cs similarity index 95% rename from EmmyLua/CodeAnalysis/Diagnostics/Handlers/UndefinedGlobalHandler.cs rename to EmmyLua/CodeAnalysis/Diagnostics/Checkers/UndefinedGlobalChecker.cs index ed59ea9f..6dc6f405 100644 --- a/EmmyLua/CodeAnalysis/Diagnostics/Handlers/UndefinedGlobalHandler.cs +++ b/EmmyLua/CodeAnalysis/Diagnostics/Checkers/UndefinedGlobalChecker.cs @@ -2,10 +2,10 @@ using EmmyLua.CodeAnalysis.Compilation.Type; using EmmyLua.CodeAnalysis.Syntax.Node.SyntaxNodes; -namespace EmmyLua.CodeAnalysis.Diagnostics.Handlers; +namespace EmmyLua.CodeAnalysis.Diagnostics.Checkers; -public class UndefinedGlobalHandler(LuaCompilation compilation) - : DiagnosticHandlerBase(compilation, +public class UndefinedGlobalChecker(LuaCompilation compilation) + : DiagnosticCheckerBase(compilation, [DiagnosticCode.UndefinedGlobal, DiagnosticCode.NeedImport]) { public override void Check(DiagnosticContext context) diff --git a/EmmyLua/CodeAnalysis/Diagnostics/Handlers/UnusedHandler.cs b/EmmyLua/CodeAnalysis/Diagnostics/Checkers/UnusedChecker.cs similarity index 92% rename from EmmyLua/CodeAnalysis/Diagnostics/Handlers/UnusedHandler.cs rename to EmmyLua/CodeAnalysis/Diagnostics/Checkers/UnusedChecker.cs index 3a36c225..9b2f7e3f 100644 --- a/EmmyLua/CodeAnalysis/Diagnostics/Handlers/UnusedHandler.cs +++ b/EmmyLua/CodeAnalysis/Diagnostics/Checkers/UnusedChecker.cs @@ -3,9 +3,9 @@ using EmmyLua.CodeAnalysis.Compilation.Semantic; using EmmyLua.CodeAnalysis.Syntax.Node.SyntaxNodes; -namespace EmmyLua.CodeAnalysis.Diagnostics.Handlers; +namespace EmmyLua.CodeAnalysis.Diagnostics.Checkers; -public class UnusedHandler(LuaCompilation compilation) : DiagnosticHandlerBase(compilation, [DiagnosticCode.Unused]) +public class UnusedChecker(LuaCompilation compilation) : DiagnosticCheckerBase(compilation, [DiagnosticCode.Unused]) { public override void Check(DiagnosticContext context) { diff --git a/EmmyLua/CodeAnalysis/Diagnostics/LuaDiagnostics.cs b/EmmyLua/CodeAnalysis/Diagnostics/LuaDiagnostics.cs index 3d9f0f75..af58f8b0 100644 --- a/EmmyLua/CodeAnalysis/Diagnostics/LuaDiagnostics.cs +++ b/EmmyLua/CodeAnalysis/Diagnostics/LuaDiagnostics.cs @@ -1,16 +1,16 @@ using EmmyLua.CodeAnalysis.Compilation; -using EmmyLua.CodeAnalysis.Diagnostics.Handlers; +using EmmyLua.CodeAnalysis.Diagnostics.Checkers; using EmmyLua.CodeAnalysis.Document; namespace EmmyLua.CodeAnalysis.Diagnostics; public class LuaDiagnostics(LuaCompilation compilation) { - private List Handlers { get; } = new() + private List Handlers { get; } = new() { - new UnusedHandler(compilation), - new UndefinedGlobalHandler(compilation), - new TypeCheckHandler(compilation) + new UnusedChecker(compilation), + new UndefinedGlobalChecker(compilation), + new TypeChecker(compilation) }; public LuaCompilation Compilation { get; } = compilation; @@ -44,9 +44,9 @@ public void Check(LuaDocument document) } } - public bool CanCheck(LuaDocumentId documentId, DiagnosticHandlerBase handlerBase) + public bool CanCheck(LuaDocumentId documentId, DiagnosticCheckerBase checkerBase) { - var codes = handlerBase.Codes; + var codes = checkerBase.Codes; return codes.Count != 0 && codes.Any(code => CanCheckCode(documentId, code)); } diff --git a/LanguageServer/CodeAction/CodeActionHandler.cs b/LanguageServer/CodeAction/CodeActionHandler.cs index 50416e10..46d7aebf 100644 --- a/LanguageServer/CodeAction/CodeActionHandler.cs +++ b/LanguageServer/CodeAction/CodeActionHandler.cs @@ -26,7 +26,7 @@ protected override CodeActionRegistrationOptions CreateRegistrationOptions(CodeA CancellationToken cancellationToken) { var result = new List(); - var uri = request.TextDocument.Uri.ToUnencodedString(); + var uri = request.TextDocument.Uri.ToUri().AbsoluteUri; var diagnostics = request.Context.Diagnostics; context.ReadyRead(() => { diff --git a/LanguageServer/Completion/CompletionHandler.cs b/LanguageServer/Completion/CompletionHandler.cs index 0835d1d0..5158d97f 100644 --- a/LanguageServer/Completion/CompletionHandler.cs +++ b/LanguageServer/Completion/CompletionHandler.cs @@ -31,7 +31,7 @@ protected override CompletionRegistrationOptions CreateRegistrationOptions(Compl public override Task Handle(CompletionParams request, CancellationToken cancellationToken) { - var uri = request.TextDocument.Uri.ToUnencodedString(); + var uri = request.TextDocument.Uri.ToUri().AbsoluteUri; CompletionList container = new(); context.ReadyRead(() => { diff --git a/LanguageServer/Definition/DefinitionHandler.cs b/LanguageServer/Definition/DefinitionHandler.cs index add28729..0c5c6fad 100644 --- a/LanguageServer/Definition/DefinitionHandler.cs +++ b/LanguageServer/Definition/DefinitionHandler.cs @@ -21,7 +21,7 @@ protected override DefinitionRegistrationOptions CreateRegistrationOptions(Defin public override Task Handle(DefinitionParams request, CancellationToken cancellationToken) { - var uri = request.TextDocument.Uri.ToUnencodedString(); + var uri = request.TextDocument.Uri.ToUri().AbsoluteUri; LocationOrLocationLinks? locationLinks = null; context.ReadyRead(() => { diff --git a/LanguageServer/DocumentColor/ColorPresentationHandler.cs b/LanguageServer/DocumentColor/ColorPresentationHandler.cs index c765c2e5..88bae696 100644 --- a/LanguageServer/DocumentColor/ColorPresentationHandler.cs +++ b/LanguageServer/DocumentColor/ColorPresentationHandler.cs @@ -11,7 +11,7 @@ class ColorPresentationHandler(ServerContext context) : ColorPresentationHandler public override Task> Handle(ColorPresentationParams request, CancellationToken cancellationToken) { - var uri = request.TextDocument.Uri.ToUnencodedString(); + var uri = request.TextDocument.Uri.ToUri().AbsoluteUri; Container container = new Container(); context.ReadyRead(() => { diff --git a/LanguageServer/DocumentColor/DocumentColorHandler.cs b/LanguageServer/DocumentColor/DocumentColorHandler.cs index 53bd9507..0df6fbfa 100644 --- a/LanguageServer/DocumentColor/DocumentColorHandler.cs +++ b/LanguageServer/DocumentColor/DocumentColorHandler.cs @@ -22,7 +22,7 @@ protected override DocumentColorRegistrationOptions CreateRegistrationOptions(Co public override Task?> Handle(DocumentColorParams request, CancellationToken cancellationToken) { - var uri = request.TextDocument.Uri.ToUnencodedString(); + var uri = request.TextDocument.Uri.ToUri().AbsoluteUri; Container? container = null; context.ReadyRead(() => { diff --git a/LanguageServer/DocumentLink/DocumentLinkHandler.cs b/LanguageServer/DocumentLink/DocumentLinkHandler.cs index e4556ecf..55eedaae 100644 --- a/LanguageServer/DocumentLink/DocumentLinkHandler.cs +++ b/LanguageServer/DocumentLink/DocumentLinkHandler.cs @@ -22,7 +22,7 @@ protected override DocumentLinkRegistrationOptions CreateRegistrationOptions(Doc public override Task Handle(DocumentLinkParams request, CancellationToken cancellationToken) { - var uri = request.TextDocument.Uri.ToUnencodedString(); + var uri = request.TextDocument.Uri.ToUri().AbsoluteUri; DocumentLinkContainer? container = null; context.ReadyRead(() => { diff --git a/LanguageServer/DocumentRender/EmmyAnnotatorHandler.cs b/LanguageServer/DocumentRender/EmmyAnnotatorHandler.cs index 780f49b0..53f125f6 100644 --- a/LanguageServer/DocumentRender/EmmyAnnotatorHandler.cs +++ b/LanguageServer/DocumentRender/EmmyAnnotatorHandler.cs @@ -13,7 +13,7 @@ public class EmmyAnnotatorHandler(ServerContext context) : IJsonRpcRequestHandle public Task> Handle(EmmyAnnotatorRequestParams request, CancellationToken cancellationToken) { var documentUri = DocumentUri.From(request.uri); - var uri = documentUri.ToUnencodedString(); + var uri = documentUri.ToUri().AbsoluteUri; var response = new List(); context.ReadyRead(() => { diff --git a/LanguageServer/DocumentSymbol/DocumentSymbolHandler.cs b/LanguageServer/DocumentSymbol/DocumentSymbolHandler.cs index a243a622..6bf1f207 100644 --- a/LanguageServer/DocumentSymbol/DocumentSymbolHandler.cs +++ b/LanguageServer/DocumentSymbol/DocumentSymbolHandler.cs @@ -24,7 +24,7 @@ protected override DocumentSymbolRegistrationOptions CreateRegistrationOptions(D public override Task Handle(DocumentSymbolParams request, CancellationToken cancellationToken) { - var uri = request.TextDocument.Uri.ToUnencodedString(); + var uri = request.TextDocument.Uri.ToUri().AbsoluteUri; SymbolInformationOrDocumentSymbolContainer? container = null; context.ReadyRead(() => { diff --git a/LanguageServer/Hover/HoverHandler.cs b/LanguageServer/Hover/HoverHandler.cs index 45d11278..de9695d4 100644 --- a/LanguageServer/Hover/HoverHandler.cs +++ b/LanguageServer/Hover/HoverHandler.cs @@ -24,7 +24,7 @@ protected override HoverRegistrationOptions CreateRegistrationOptions(HoverCapab public override Task Handle(HoverParams request, CancellationToken cancellationToken) { - var uri = request.TextDocument.Uri.ToUnencodedString(); + var uri = request.TextDocument.Uri.ToUri().AbsoluteUri; OmniSharp.Extensions.LanguageServer.Protocol.Models.Hover? hover = null; context.ReadyRead(() => { diff --git a/LanguageServer/InlayHint/InlayHintHandler.cs b/LanguageServer/InlayHint/InlayHintHandler.cs index f04fdb5c..93c8c2d8 100644 --- a/LanguageServer/InlayHint/InlayHintHandler.cs +++ b/LanguageServer/InlayHint/InlayHintHandler.cs @@ -25,7 +25,7 @@ protected override InlayHintRegistrationOptions CreateRegistrationOptions(InlayH public override Task Handle(InlayHintParams request, CancellationToken cancellationToken) { - var uri = request.TextDocument.Uri.ToUnencodedString(); + var uri = request.TextDocument.Uri.ToUri().AbsoluteUri; InlayHintContainer? inlayHintContainer = null; context.ReadyRead(() => { diff --git a/LanguageServer/InlineValues/InlineValuesHandler.cs b/LanguageServer/InlineValues/InlineValuesHandler.cs index f0fdda61..8850c8f7 100644 --- a/LanguageServer/InlineValues/InlineValuesHandler.cs +++ b/LanguageServer/InlineValues/InlineValuesHandler.cs @@ -22,7 +22,7 @@ protected override InlineValueRegistrationOptions CreateRegistrationOptions(Inli public override Task?> Handle(InlineValueParams request, CancellationToken cancellationToken) { - var uri = request.TextDocument.Uri.ToUnencodedString(); + var uri = request.TextDocument.Uri.ToUri().AbsoluteUri; Container? container = null; context.ReadyRead(() => { diff --git a/LanguageServer/References/ReferencesHandler.cs b/LanguageServer/References/ReferencesHandler.cs index 270137f5..dd310a50 100644 --- a/LanguageServer/References/ReferencesHandler.cs +++ b/LanguageServer/References/ReferencesHandler.cs @@ -20,7 +20,7 @@ protected override ReferenceRegistrationOptions CreateRegistrationOptions(Refere public override Task Handle(ReferenceParams request, CancellationToken cancellationToken) { - var uri = request.TextDocument.Uri.ToUnencodedString(); + var uri = request.TextDocument.Uri.ToUri().AbsoluteUri; LocationContainer? locationContainer = null; context.ReadyRead(() => { diff --git a/LanguageServer/Rename/RenameHandler.cs b/LanguageServer/Rename/RenameHandler.cs index c6805184..870e3ddc 100644 --- a/LanguageServer/Rename/RenameHandler.cs +++ b/LanguageServer/Rename/RenameHandler.cs @@ -23,7 +23,7 @@ protected override RenameRegistrationOptions CreateRegistrationOptions(RenameCap public override Task Handle(RenameParams request, CancellationToken cancellationToken) { - var uri = request.TextDocument.Uri.ToUnencodedString(); + var uri = request.TextDocument.Uri.ToUri().AbsoluteUri; WorkspaceEdit? workspaceEdit = null; context.ReadyRead(() => { diff --git a/LanguageServer/SemanticToken/SemanticTokenHandler.cs b/LanguageServer/SemanticToken/SemanticTokenHandler.cs index f7d0f5ac..90a9981d 100644 --- a/LanguageServer/SemanticToken/SemanticTokenHandler.cs +++ b/LanguageServer/SemanticToken/SemanticTokenHandler.cs @@ -26,9 +26,9 @@ protected override SemanticTokensRegistrationOptions CreateRegistrationOptions(S protected override Task Tokenize(SemanticTokensBuilder builder, ITextDocumentIdentifierParams identifier, CancellationToken cancellationToken) { + var uri = identifier.TextDocument.Uri.ToUri().AbsoluteUri; context.ReadyRead(() => { - var uri = identifier.TextDocument.Uri.ToUnencodedString(); var semanticModel = context.LuaWorkspace.Compilation.GetSemanticModel(uri); if (semanticModel is not null) { diff --git a/LanguageServer/SignatureHelper/SignatureHelperHandler.cs b/LanguageServer/SignatureHelper/SignatureHelperHandler.cs index fed50c9d..558ca29f 100644 --- a/LanguageServer/SignatureHelper/SignatureHelperHandler.cs +++ b/LanguageServer/SignatureHelper/SignatureHelperHandler.cs @@ -23,7 +23,7 @@ protected override SignatureHelpRegistrationOptions CreateRegistrationOptions(Si public override Task Handle(SignatureHelpParams request, CancellationToken cancellationToken) { - var uri = request.TextDocument.Uri.ToUnencodedString(); + var uri = request.TextDocument.Uri.ToUri().AbsoluteUri; SignatureHelp? signatureHelp = null; context.ReadyRead(() => { diff --git a/LanguageServer/TextDocument/TextDocumentHandler.cs b/LanguageServer/TextDocument/TextDocumentHandler.cs index 9b5df6c1..2ff6d503 100644 --- a/LanguageServer/TextDocument/TextDocumentHandler.cs +++ b/LanguageServer/TextDocument/TextDocumentHandler.cs @@ -35,7 +35,7 @@ protected override TextDocumentSyncRegistrationOptions CreateRegistrationOptions public override Task Handle(DidOpenTextDocumentParams request, CancellationToken cancellationToken) { - var uri = request.TextDocument.Uri.ToUnencodedString(); + var uri = request.TextDocument.Uri.ToUri().AbsoluteUri; context.ReadyWrite(() => { context.LuaWorkspace.UpdateDocumentByUri(uri, request.TextDocument.Text); @@ -52,11 +52,14 @@ public override Task Handle(DidOpenTextDocumentParams request, Cancellatio public override Task Handle(DidChangeTextDocumentParams request, CancellationToken cancellationToken) { var changes = request.ContentChanges.ToList(); - var uri = request.TextDocument.Uri.ToUnencodedString(); + var uri = request.TextDocument.Uri.ToUri().AbsoluteUri; context.ReadyWrite(() => { context.LuaWorkspace.UpdateDocumentByUri(uri, changes[0].Text); - PushDiagnostic(request.TextDocument, context.LuaWorkspace.Compilation.GetSemanticModel(uri)!); + if (context.LuaWorkspace.Compilation.GetSemanticModel(uri) is { } semanticModel) + { + PushDiagnostic(request.TextDocument, semanticModel); + } }); return Unit.Task; @@ -69,9 +72,10 @@ public override Task Handle(DidSaveTextDocumentParams request, Cancellatio public override Task Handle(DidCloseTextDocumentParams request, CancellationToken cancellationToken) { + var uri = request.TextDocument.Uri.ToUri().AbsoluteUri; context.ReadyWrite(() => { - context.LuaWorkspace.CloseDocument(request.TextDocument.Uri.ToUnencodedString()); + context.LuaWorkspace.CloseDocument(uri); }); return Unit.Task; diff --git a/LanguageServer/TypeHierarchy/TypeHierarchyHandler.cs b/LanguageServer/TypeHierarchy/TypeHierarchyHandler.cs index ef23566c..ca8a3ff7 100644 --- a/LanguageServer/TypeHierarchy/TypeHierarchyHandler.cs +++ b/LanguageServer/TypeHierarchy/TypeHierarchyHandler.cs @@ -25,9 +25,10 @@ protected override TypeHierarchyRegistrationOptions CreateRegistrationOptions(Ty CancellationToken cancellationToken) { Container? result = null; + var uri = request.TextDocument.Uri.ToUri().AbsoluteUri; context.ReadyRead(() => { - var semanticModel = context.GetSemanticModel(request.TextDocument.Uri.ToUnencodedString()); + var semanticModel = context.GetSemanticModel(uri); if (semanticModel is not null) { var node = semanticModel.Document.SyntaxTree.SyntaxRoot.NameNodeAt(request.Position.Line,