phpactor icon indicating copy to clipboard operation
phpactor copied to clipboard

Unsaved documents cause exceptions

Open BladeMF opened this issue 3 years ago • 0 comments

In VSCode when opening a new file and typing int before saving it it produces the following error:

[Error - 7:30:09 AM] Request textDocument/codeAction failed.
  Message: Exception [Phpactor\TextDocument\Exception\InvalidUriException] Only "file://" scheme is supported, got "untitled" at /root/.shared_extensions/phpactor2/lib/TextDocument/TextDocumentUri.php#44
  Code: -32603 
#0 /root/.shared_extensions/phpactor2/lib/TextDocument/TextDocumentBuilder.php(76): Phpactor\TextDocument\TextDocumentUri::fromString('untitled:Untitl...')
#1 /root/.shared_extensions/phpactor2/lib/Extension/LanguageServerBridge/Converter/TextDocumentConverter.php(15): Phpactor\TextDocument\TextDocumentBuilder->uri('untitled:Untitl...')
#2 /root/.shared_extensions/phpactor2/lib/Extension/LanguageServerCodeTransform/CodeAction/TransformerCodeActionPovider.php(87): Phpactor\Extension\LanguageServerBridge\Converter\TextDocumentConverter::fromLspTextItem(Object(Phpactor\LanguageServerProtocol\TextDocumentItem))
#3 /root/.shared_extensions/phpactor2/lib/Extension/LanguageServerCodeTransform/CodeAction/TransformerCodeActionPovider.php(54): Phpactor\Extension\LanguageServerCodeTransform\CodeAction\TransformerCodeActionPovider->getDiagnostics(Object(Phpactor\LanguageServerProtocol\TextDocumentItem))
#4 /root/.shared_extensions/phpactor2/vendor/amphp/amp/lib/functions.php(90): Phpactor\Extension\LanguageServerCodeTransform\CodeAction\TransformerCodeActionPovider->Phpactor\Extension\LanguageServerCodeTransform\CodeAction\{closure}()
#5 /root/.shared_extensions/phpactor2/lib/Extension/LanguageServerCodeTransform/CodeAction/TransformerCodeActionPovider.php(74): Amp\call(Object(Closure))
#6 /root/.shared_extensions/phpactor2/vendor/phpactor/language-server/lib/Core/CodeAction/AggregateCodeActionProvider.php(32): Phpactor\Extension\LanguageServerCodeTransform\CodeAction\TransformerCodeActionPovider->provideActionsFor(Object(Phpactor\LanguageServerProtocol\TextDocumentItem), Object(Phpactor\LanguageServerProtocol\Range), Object(Amp\CancellationToken@anonymous))
#7 [internal function]: Phpactor\LanguageServer\Core\CodeAction\AggregateCodeActionProvider->Phpactor\LanguageServer\Core\CodeAction\{closure}()
#8 /root/.shared_extensions/phpactor2/vendor/amphp/amp/lib/Coroutine.php(118): Generator->send(NULL)
#9 /root/.shared_extensions/phpactor2/vendor/amphp/amp/lib/Internal/Placeholder.php(149): Amp\Coroutine->Amp\{closure}(NULL, NULL)
#10 /root/.shared_extensions/phpactor2/vendor/amphp/amp/lib/Delayed.php(26): Amp\Delayed->resolve(NULL)
#11 /root/.shared_extensions/phpactor2/vendor/amphp/amp/lib/Loop/NativeDriver.php(142): Amp\Delayed->Amp\{closure}('wie', NULL)
#12 /root/.shared_extensions/phpactor2/vendor/amphp/amp/lib/Loop/Driver.php(138): Amp\Loop\NativeDriver->dispatch(true)
#13 /root/.shared_extensions/phpactor2/vendor/amphp/amp/lib/Loop/Driver.php(72): Amp\Loop\Driver->tick()
#14 /root/.shared_extensions/phpactor2/vendor/amphp/amp/lib/Loop.php(95): Amp\Loop\Driver->run()
#15 /root/.shared_extensions/phpactor2/vendor/phpactor/language-server/lib/Core/Server/LanguageServer.php(112): Amp\Loop::run(Object(Closure))
#16 /root/.shared_extensions/phpactor2/lib/Extension/LanguageServer/Command/StartCommand.php(54): Phpactor\LanguageServer\Core\Server\LanguageServer->run()
#17 /root/.shared_extensions/phpactor2/vendor/symfony/console/Command/Command.php(298): Phpactor\Extension\LanguageServer\Command\StartCommand->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#18 /root/.shared_extensions/phpactor2/vendor/symfony/console/Application.php(1024): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#19 /root/.shared_extensions/phpactor2/vendor/symfony/console/Application.php(299): Symfony\Component\Console\Application->doRunCommand(Object(Phpactor\Extension\LanguageServer\Command\StartCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#20 /root/.shared_extensions/phpactor2/lib/Application.php(48): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#21 /root/.shared_extensions/phpactor2/vendor/symfony/console/Application.php(171): Phpactor\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#22 /root/.shared_extensions/phpactor2/bin/phpactor(45): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#23 {main}

That error is preceeded by this:

[Trace - 7:30:09 AM] Sending notification 'textDocument/didOpen'.
Params: {
    "textDocument": {
        "uri": "untitled:Untitled-1",
        "languageId": "php",
        "version": 15,
        "text": "<?php\n\n$a = 5;"
    }
}


[Trace - 7:30:09 AM] Sending request 'textDocument/codeAction - (70)'.
Params: {
    "textDocument": {
        "uri": "untitled:Untitled-1"
    },
    "range": {
        "start": {
            "line": 2,
            "character": 7
        },
        "end": {
            "line": 2,
            "character": 7
        }
    },
    "context": {
        "diagnostics": []
    }
}

Currently I don't mind not getting any language services until I save, but the exception is really annoying.

BladeMF avatar Aug 05 '22 07:08 BladeMF

Will be fixed by https://github.com/phpactor/phpactor/pull/1871

dantleech avatar Sep 11 '22 15:09 dantleech