Describe the bug
Clean install on sublime
To Reproduce
Go To Definition or any Command
Feb 01, 2019 3:05:25 PM org.eclipse.lsp4j.jsonrpc.RemoteEndpoint fallbackResponseError
SEVERE: Internal error: java.lang.NullPointerException
java.util.concurrent.CompletionException: java.lang.NullPointerException
at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:292)
at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:308)
at java.util.concurrent.CompletableFuture.uniAccept(CompletableFuture.java:647)
at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:632)
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474)
at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1977)
at scala.concurrent.java8.FuturesConvertersImpl$CF.apply(FutureConvertersImpl.scala:21)
at scala.concurrent.java8.FuturesConvertersImpl$CF.apply(FutureConvertersImpl.scala:18)
at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:64)
at scala.concurrent.BatchingExecutor$Batch.processBatch$1(BatchingExecutor.scala:67)
at scala.concurrent.BatchingExecutor$Batch.$anonfun$run$1(BatchingExecutor.scala:82)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:85)
at scala.concurrent.BatchingExecutor$Batch.run(BatchingExecutor.scala:59)
at scala.concurrent.Future$InternalCallbackExecutor$.unbatchedExecute(Future.scala:874)
at scala.concurrent.BatchingExecutor.execute(BatchingExecutor.scala:110)
at scala.concurrent.BatchingExecutor.execute$(BatchingExecutor.scala:107)
at scala.concurrent.Future$InternalCallbackExecutor$.execute(Future.scala:872)
at scala.concurrent.impl.CallbackRunnable.executeWithValue(Promise.scala:72)
at scala.concurrent.impl.Promise$DefaultPromise.$anonfun$tryComplete$1(Promise.scala:288)
at scala.concurrent.impl.Promise$DefaultPromise.$anonfun$tryComplete$1$adapted(Promise.scala:288)
at scala.concurrent.impl.Promise$DefaultPromise.tryComplete(Promise.scala:288)
at scala.concurrent.Promise.complete(Promise.scala:53)
at scala.concurrent.Promise.complete$(Promise.scala:52)
at scala.concurrent.impl.Promise$DefaultPromise.complete(Promise.scala:187)
at scala.concurrent.impl.Promise.$anonfun$transform$1(Promise.scala:33)
at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:64)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
at scala.meta.internal.metals.MetalsLanguageServer.updateWorkspaceDirectory(MetalsLanguageServer.scala:253)
at scala.meta.internal.metals.MetalsLanguageServer.$anonfun$initialize$2(MetalsLanguageServer.scala:296)
at scala.concurrent.Future$.$anonfun$apply$1(Future.scala:658)
at scala.util.Success.$anonfun$map$1(Try.scala:255)
at scala.util.Success.map(Try.scala:213)
at scala.concurrent.Future.$anonfun$map$1(Future.scala:292)
at scala.concurrent.impl.Promise.liftedTree1$1(Promise.scala:33)
... 5 more
Expected behavior
No Crash
Installation:
getWorkspaceFolders returns null. I will try to create a workspace to see if it works around this problem.
InitializeParams [
processId = 13450
rootPath = "/home/gui/automat/product-recommentation-engine"
rootUri = "file:///home/gui/automat/product-recommentation-engine"
initializationOptions = null
capabilities = ClientCapabilities [
workspace = WorkspaceClientCapabilities [
applyEdit = true
workspaceEdit = null
didChangeConfiguration = DidChangeConfigurationCapabilities [
dynamicRegistration = null
]
didChangeWatchedFiles = null
symbol = null
executeCommand = null
workspaceFolders = null
configuration = null
]
textDocument = TextDocumentClientCapabilities [
synchronization = SynchronizationCapabilities [
willSave = null
willSaveWaitUntil = null
didSave = true
dynamicRegistration = null
]
completion = CompletionCapabilities [
completionItem = CompletionItemCapabilities [
snippetSupport = true
commitCharactersSupport = null
documentationFormat = null
deprecatedSupport = null
preselectSupport = null
]
completionItemKind = CompletionItemKindCapabilities [
valueSet = ArrayList (
Text,
Method,
Function,
Constructor,
Field,
Variable,
Class,
Interface,
Module,
Property,
Unit,
Value,
Enum,
Keyword,
Snippet,
Color,
File,
Reference
)
]
contextSupport = null
dynamicRegistration = null
]
hover = HoverCapabilities [
contentFormat = ArrayList (
"markdown",
"plaintext"
)
dynamicRegistration = null
]
signatureHelp = SignatureHelpCapabilities [
signatureInformation = SignatureInformationCapabilities [
documentationFormat = ArrayList (
"markdown",
"plaintext"
)
]
dynamicRegistration = null
]
references = ReferencesCapabilities [
dynamicRegistration = null
]
documentHighlight = DocumentHighlightCapabilities [
dynamicRegistration = null
]
documentSymbol = DocumentSymbolCapabilities [
symbolKind = SymbolKindCapabilities [
valueSet = ArrayList (
File,
Module,
Namespace,
Package,
Class,
Method,
Property,
Field,
Interface,
Function,
Variable,
Constant
)
]
hierarchicalDocumentSymbolSupport = null
dynamicRegistration = null
]
formatting = FormattingCapabilities [
dynamicRegistration = null
]
rangeFormatting = RangeFormattingCapabilities [
dynamicRegistration = null
]
onTypeFormatting = null
definition = DefinitionCapabilities [
dynamicRegistration = null
]
typeDefinition = null
implementation = null
codeAction = CodeActionCapabilities [
codeActionLiteralSupport = null
dynamicRegistration = null
]
codeLens = null
documentLink = null
colorProvider = null
rename = RenameCapabilities [
dynamicRegistration = null
]
publishDiagnostics = null
foldingRange = null
semanticHighlightingCapabilities = null
]
experimental = null
]
clientName = null
trace = null
workspaceFolders = null
]
@MasseGuillaume can you check which version for the LSP plugin are you using ?
Thanks for reporting! I forgot to handle null fields, was sloppy. Fix in #517, will publish a quick release after merging.
Triggered v0.4.2 release https://travis-ci.org/scalameta/metals/jobs/487553289
@olafurpg why not using the rootPath as a fallback ?
We already use rootUri for that, I think workspace folders is a vscode-only feature that allows you to attach additional folders to the workspace.
Oki, workspaces are also available in sublime-text, but not used that much.
v0.4.2 should be out now