fwcd / kotlin-language-server

Kotlin code completion, diagnostics and more for any editor/IDE using the Language Server Protocol
MIT License
1.62k stars 203 forks source link

No declarations or definitions can be resolved #495

Open GrantFleming opened 11 months ago

GrantFleming commented 11 months ago

I have VSCode setup on Windows remoting into WSL.

I have the fwcd extension installed, as well as Gradle for Java + others.

When I download a fresh gradle project from, say, spring initializr - I get some declaration/definition support immediately (I can go-to-definition of @SpringBootApplication for example) and the extension appears to work more-or-less like expected.

However on closing the project - it never works correctly again. Anytime I reopen the project, it either shows no errors, but I cannot go to any definition that is not local to the file I'm working on, or it cannot find any reference at all.

image

I do notice a big ol' stack trace in the Kotlin language server logs, but I'm unsure what the root cause of the compilation error is here.

I suspect that when I don't see the unresoved reference errors, but cannot go-to-definition as the definition is not found, this may be a different error and can open seperately.

Fresh startup logs from the Kotlin language server:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Sep 16, 2023 9:34:04 AM org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint lambda$recursiveFindRpcMethods$2
SEVERE: A delegate object is null, jsonrpc methods of 'public default org.eclipse.lsp4j.services.NotebookDocumentService org.eclipse.lsp4j.services.LanguageServer.getNotebookDocumentService()' are ignored
[Info  - 9:34:05 AM] main      Adding script definitions [null]
[Info  - 9:34:05 AM] main      Kotlin Language Server: Version 1.3.5
[Error - 9:34:05 AM] main      A delegate object is null, jsonrpc methods of 'public default org.eclipse.lsp4j.services.NotebookDocumentService org.eclipse.lsp4j.services.LanguageServer.getNotebookDocumentService()' are ignored
[Info  - 9:34:05 AM] main      Connected to client
[Info  - 9:34:05 AM] async0    Adding workspace folder myscaryproject
[Info  - 9:34:05 AM] async0    Adding .../myscaryproject/MyscaryprojectApplicationTests.kt, .../myscaryproject/MyscaryprojectApplication.kt under /home/grant/myscaryproject to source path
[Info  - 9:34:05 AM] async0    Searching for dependencies and Java sources in workspace root /home/grant/myscaryproject
[Info  - 9:34:05 AM] async0    Classpath has not changed. Fetching from cache
[Info  - 9:34:05 AM] async0    Adding 55 files to class path
[Info  - 9:34:05 AM] async0    Update build script path
[Info  - 9:34:05 AM] async0    Build script classpath has not changed. Fetching from cache
[Info  - 9:34:05 AM] async0    Adding [/home/grant/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.8.22/636bf8b320e7627482771bbac9ed7246773c02bd/kotlin-stdlib-1.8.22.jar] to build script class path
[Info  - 9:34:05 AM] async0    Reinstantiating compiler
[Info  - 9:34:05 AM] async0    Adding script definitions [null]
[Info  - 9:34:05 AM] async0    Adding script definitions [null]
[Info  - 9:34:05 AM] client    Updated configuration: {"kotlin":{"java":{"home":"/usr/lib/jvm/java-17-openjdk-amd64"},"languageServer":{"enabled":true,"path":"","transport":"stdio","port":0,"debugAttach":{"enabled":false,"port":5005,"autoSuspend":false}},"trace":{"server":"off"},"compiler":{"jvm":{"target":"17"}},"linting":{"debounceTime":250},"indexing":{"enabled":true},"completion":{"snippets":{"enabled":true}},"debugAdapter":{"enabled":true,"path":""},"debounceTime":250,"externalSources":{"useKlsScheme":true,"autoConvertToKotlin":false},"snippetsEnabled":true}}
[Info  - 9:34:05 AM] async3    Find symbols in .../myscaryproject/MyscaryprojectApplication.kt
[Info  - 9:34:06 AM] async3    Finished in 216 ms
[Info  - 9:34:06 AM] async3    Ranged semantic tokens in .../myscaryproject/MyscaryprojectApplication.kt
[Info  - 9:34:07 AM] async4    Updating symbol index...
[Info  - 9:34:07 AM] async4    Updated symbol index in 28 ms! (2 symbol(s))
[Info  - 9:34:07 AM] async4    Updating symbol index...
[Info  - 9:34:07 AM] async4    Updated symbol index in 0 ms! (3 symbol(s))
[Info  - 9:34:07 AM] async4    Updating symbol index...
[Info  - 9:34:07 AM] async4    Updated symbol index in 0 ms! (5 symbol(s))
[Info  - 9:34:07 AM] async3    Found 35 tokens
[Info  - 9:34:07 AM] async3    Finished in 1554 ms
[Info  - 9:34:07 AM] async3    Full semantic tokens in .../myscaryproject/MyscaryprojectApplication.kt
[Info  - 9:34:07 AM] async3    Found 35 tokens
[Info  - 9:34:07 AM] async3    Finished in 3 ms
[Error - 9:34:07 AM] org.jetbrains.kotlin.backend.common.BackendException: Backend Internal error: Exception during file facade code generation
File being compiled: mock:////home/grant/myscaryproject/src/test/kotlin/com/example/myscaryproject/MyscaryprojectApplicationTests.kt
The root cause java.lang.IllegalStateException was thrown at: org.jetbrains.kotlin.codegen.state.KotlinTypeMapper$typeMappingConfiguration$1.processErrorType(KotlinTypeMapper.kt:124)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.backend.common.CodegenUtil.reportBackendException(CodegenUtil.kt:241)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.PackageCodegenImpl.generate(PackageCodegenImpl.java:78)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.DefaultCodegenFactory.generatePackage(CodegenFactory.kt:143)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.DefaultCodegenFactory.invokeLowerings(CodegenFactory.kt:122)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.CodegenFactory.generateModule(CodegenFactory.kt:44)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.KotlinCodegenFacade.compileCorrectFiles(KotlinCodegenFacade.java:45)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.KotlinCodegenFacade.compileCorrectFiles(KotlinCodegenFacade.java:54)
[Error - 9:34:07 AM]    at org.javacs.kt.compiler.Compiler.generateCode(Compiler.kt:580)
[Error - 9:34:07 AM]    at org.javacs.kt.SourcePath.save(SourcePath.kt:277)
[Error - 9:34:07 AM]    at org.javacs.kt.SourcePath.saveAllFiles(SourcePath.kt:289)
[Error - 9:34:07 AM]    at org.javacs.kt.KotlinTextDocumentService$lintAll$1.invoke(KotlinTextDocumentService.kt:270)
[Error - 9:34:07 AM]    at org.javacs.kt.KotlinTextDocumentService$lintAll$1.invoke(KotlinTextDocumentService.kt:268)
[Error - 9:34:07 AM]    at org.javacs.kt.util.Debouncer.submitImmediately$lambda$1(Debouncer.kt:27)
[Error - 9:34:07 AM]    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
[Error - 9:34:07 AM]    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[Error - 9:34:07 AM]    at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
[Error - 9:34:07 AM]    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[Error - 9:34:07 AM]    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[Error - 9:34:07 AM]    at java.base/java.lang.Thread.run(Thread.java:833)
[Error - 9:34:07 AM] Caused by: java.lang.IllegalStateException: Error type encountered: [Error type: Unresolved type for SpringBootTest] (ErrorType).
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.state.KotlinTypeMapper$typeMappingConfiguration$1.processErrorType(KotlinTypeMapper.kt:124)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.load.kotlin.DescriptorBasedTypeSignatureMappingKt.mapType(descriptorBasedTypeSignatureMapping.kt:83)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.state.KotlinTypeMapper.mapType(KotlinTypeMapper.kt:276)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.state.KotlinTypeMapper.mapType$default(KotlinTypeMapper.kt:267)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.state.KotlinTypeMapper.mapType(KotlinTypeMapper.kt)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.AnnotationCodegen.genAnnotation(AnnotationCodegen.java:385)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.AnnotationCodegen.genAnnotations(AnnotationCodegen.java:153)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.AnnotationCodegen.genAnnotations(AnnotationCodegen.java:116)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.ImplementationBodyCodegen.generateDeclaration(ImplementationBodyCodegen.java:248)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.MemberCodegen.generate(MemberCodegen.java:122)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.MemberCodegen.genClassOrObject(MemberCodegen.java:305)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.MemberCodegen.genClassOrObject(MemberCodegen.java:289)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.PackageCodegenImpl.generateClassesAndObjectsInFile(PackageCodegenImpl.java:119)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.PackageCodegenImpl.generateFile(PackageCodegenImpl.java:138)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.PackageCodegenImpl.generate(PackageCodegenImpl.java:70)
[Error - 9:34:07 AM]    ... 17 more
[Error - 9:34:07 AM] org.jetbrains.kotlin.backend.common.BackendException: Backend Internal error: Exception during file facade code generation
File being compiled: mock:////home/grant/myscaryproject/src/main/kotlin/com/example/myscaryproject/MyscaryprojectApplication.kt
The root cause java.lang.IllegalStateException was thrown at: org.jetbrains.kotlin.codegen.state.KotlinTypeMapper$typeMappingConfiguration$1.processErrorType(KotlinTypeMapper.kt:124)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.backend.common.CodegenUtil.reportBackendException(CodegenUtil.kt:241)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.PackageCodegenImpl.generate(PackageCodegenImpl.java:78)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.DefaultCodegenFactory.generatePackage(CodegenFactory.kt:143)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.DefaultCodegenFactory.invokeLowerings(CodegenFactory.kt:122)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.CodegenFactory.generateModule(CodegenFactory.kt:44)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.KotlinCodegenFacade.compileCorrectFiles(KotlinCodegenFacade.java:45)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.KotlinCodegenFacade.compileCorrectFiles(KotlinCodegenFacade.java:54)
[Error - 9:34:07 AM]    at org.javacs.kt.compiler.Compiler.generateCode(Compiler.kt:580)
[Error - 9:34:07 AM]    at org.javacs.kt.SourcePath.save(SourcePath.kt:277)
[Error - 9:34:07 AM]    at org.javacs.kt.SourcePath.saveAllFiles(SourcePath.kt:289)
[Error - 9:34:07 AM]    at org.javacs.kt.KotlinTextDocumentService$lintAll$1.invoke(KotlinTextDocumentService.kt:270)
[Error - 9:34:07 AM]    at org.javacs.kt.KotlinTextDocumentService$lintAll$1.invoke(KotlinTextDocumentService.kt:268)
[Error - 9:34:07 AM]    at org.javacs.kt.util.Debouncer.submitImmediately$lambda$1(Debouncer.kt:27)
[Error - 9:34:07 AM]    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
[Error - 9:34:07 AM]    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[Error - 9:34:07 AM]    at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
[Error - 9:34:07 AM]    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[Error - 9:34:07 AM]    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[Error - 9:34:07 AM]    at java.base/java.lang.Thread.run(Thread.java:833)
[Error - 9:34:07 AM] Caused by: java.lang.IllegalStateException: Error type encountered: [Error type: Unresolved type for SpringBootApplication] (ErrorType).
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.state.KotlinTypeMapper$typeMappingConfiguration$1.processErrorType(KotlinTypeMapper.kt:124)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.load.kotlin.DescriptorBasedTypeSignatureMappingKt.mapType(descriptorBasedTypeSignatureMapping.kt:83)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.state.KotlinTypeMapper.mapType(KotlinTypeMapper.kt:276)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.state.KotlinTypeMapper.mapType$default(KotlinTypeMapper.kt:267)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.state.KotlinTypeMapper.mapType(KotlinTypeMapper.kt)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.AnnotationCodegen.genAnnotation(AnnotationCodegen.java:385)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.AnnotationCodegen.genAnnotations(AnnotationCodegen.java:153)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.AnnotationCodegen.genAnnotations(AnnotationCodegen.java:116)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.ImplementationBodyCodegen.generateDeclaration(ImplementationBodyCodegen.java:248)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.MemberCodegen.generate(MemberCodegen.java:122)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.MemberCodegen.genClassOrObject(MemberCodegen.java:305)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.MemberCodegen.genClassOrObject(MemberCodegen.java:289)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.PackageCodegenImpl.generateClassesAndObjectsInFile(PackageCodegenImpl.java:119)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.PackageCodegenImpl.generateFile(PackageCodegenImpl.java:138)
[Error - 9:34:07 AM]    at org.jetbrains.kotlin.codegen.PackageCodegenImpl.generate(PackageCodegenImpl.java:70)
[Error - 9:34:07 AM]    ... 17 more
[Info  - 9:34:07 AM] debounce0 Linting .../myscaryproject/MyscaryprojectApplication.kt
[Info  - 9:34:07 AM] async4    Updating full symbol index...
[Info  - 9:34:07 AM] debounce0 Reported 7 diagnostics in .../myscaryproject/MyscaryprojectApplication.kt
MagnusMG commented 9 months ago

I get the same problem, but I'm on macos. My project compiles fine when I run gradle build. I have tried both the automatically downloaded language server and a local build from Github.

themkat commented 9 months ago

@MagnusMG , would you like to share some logs? Would help a lot when debugging causes for the issues 🙂

My guess based upon this and my earlier experiences makes me think that the recently introduced caching solution (#337 ) have some bugs. Some projects have been behaving weirdly, and I've had to delete the symbol database to get it working again. This is usually found in the root of your project, called kls_database.db. Might be a temporary workaround for someone experiencing weird issues like this.

MagnusMG commented 9 months ago

Absolutely. I put the log here.

I'm afraid I cannot find the file kls_database.db.

themkat commented 9 months ago

Seems like VSCode saves the files in a special workspace directory, example on my Mac: Library/Application\ Support/Code/User/workspaceStorage/184e57edab10e06220a4a0d28a068565/fwcd.kotlin/kls_database.db. Think it is somewhere inside APPDATA or whatever on Windows. Might not be the issue, but always good for the person googling in the future to get some suggestions 😛 (or if any of you want to fiddle with deleting these files as a workaround).

MagnusMG commented 9 months ago

I found the file kls_database.db and deleted it. (Well, I deleted the entire folder workSpaceStorage). Still the same problem.

I noticed that I don't have any problems in other, similar projects. So it is nothing particular with my VSCode setup, but just this project. I'll create a new project fresh from gradle init, copy my source files into it, and see if I can get it to work.

MagnusMG commented 9 months ago

I created a new folder, ran gradle init, and then copied the source code files from the old folder into the new one, and the gradle.build files, and then it all worked fine. I would be great to know more precisely what went wrong, but this workaround is much better than nothing.