redhat-developer / lsp4ij

LSP Client for IntelliJ
Eclipse Public License 2.0
91 stars 17 forks source link

NullPointerException from Find Usages action in IntelliJ using LSP4IJ 0.6.0 #547

Open turkeylurkey opened 1 day ago

turkeylurkey commented 1 day ago

Use the project from LSP4Jakarta jakarta.jdt/org.eclipse.lsp4jakarta.jdt.test/projects/jakarta-sample Open io.openliberty.sample.jakarta.cdi.ManagedBean

package io.openliberty.sample.jakarta.cdi;

import jakarta.enterprise.context.*;

@RequestScoped
public class ManagedBean<T> {
    public int a;

    public ManagedBean() {
        this.a = 10;
    }
}

Select the class name. Use menu Edit > Find Usages > Show Usages Open the log. Use menu Help > Show Log in Finder. See the exception:

2024-09-27 17:36:18,534 [ 143135] SEVERE - #c.i.f.f.FindUsagesManager - Cannot invoke "com.intellij.psi.PsiFile.getVirtualFile()" because the return value of "com.intellij.psi.PsiElement.getContainingFile()" is null
java.lang.NullPointerException: Cannot invoke "com.intellij.psi.PsiFile.getVirtualFile()" because the return value of "com.intellij.psi.PsiElement.getContainingFile()" is null
at com.redhat.devtools.lsp4ij.usages.LSPUsageSearcher.doGetPosition(LSPUsageSearcher.java:96)
at com.redhat.devtools.lsp4ij.usages.LSPUsageSearcher.lambda$getPosition$4(LSPUsageSearcher.java:92)
at com.intellij.openapi.application.impl.RwLockHolder.runReadAction(RwLockHolder.kt:289)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:850)
at com.intellij.openapi.application.ReadAction.compute(ReadAction.java:65)
at com.redhat.devtools.lsp4ij.usages.LSPUsageSearcher.getPosition(LSPUsageSearcher.java:92)
at com.redhat.devtools.lsp4ij.usages.LSPUsageSearcher.processElementUsages(LSPUsageSearcher.java:66)
at com.intellij.find.findUsages.FindUsagesManager.lambda$createUsageSearcher$10(FindUsagesManager.java:403)
at com.intellij.usages.impl.SearchForUsagesRunnable.searchUsages(SearchForUsagesRunnable.java:369)
at com.intellij.usages.impl.SearchForUsagesRunnable.run(SearchForUsagesRunnable.java:352)
at com.intellij.usages.impl.UsageViewManagerImpl$2.run(UsageViewManagerImpl.java:165)
at com.intellij.openapi.progress.impl.CoreProgressManager.startTask(CoreProgressManager.java:477)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.startTask(ProgressManagerImpl.java:133)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcessWithProgressAsynchronously$6(CoreProgressManager.java:528)
at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$4(ProgressRunner.java:250)
at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$0(ProgressManager.java:100)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$1(CoreProgressManager.java:221)
at com.intellij.platform.diagnostic.telemetry.helpers.TraceKt.use(trace.kt:46)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:220)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:660)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:735)
at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:691)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:659)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:79)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:202)
at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:100)
at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$5(ProgressRunner.java:250)
at com.intellij.openapi.progress.impl.ProgressRunner$ProgressRunnable.run(ProgressRunner.java:500)
at com.intellij.util.concurrency.ChildContext$runAsCoroutine$1.invoke(propagation.kt:81)
at com.intellij.util.concurrency.ChildContext$runAsCoroutine$1.invoke(propagation.kt:81)
at com.intellij.util.concurrency.ChildContext.runAsCoroutine(propagation.kt:86)
at com.intellij.util.concurrency.ChildContext.runAsCoroutine(propagation.kt:81)
at com.intellij.openapi.progress.impl.ProgressRunner.lambda$launchTask$18(ProgressRunner.java:466)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699)
at java.base/java.lang.Thread.run(Thread.java:840)

Using Liberty Tools IntelliJ 24.0.9 and IntelliJ 0.6.0 LSP4IJ-0.6.0-20240927-013153

turkeylurkey commented 10 hours ago

Actually, I may have clicked on a package name in the import and done Find Usages. Also, I was using Ultimate 24.1.6 at the time.

angelozerr commented 10 hours ago

I will try with IJ Community and I hope I will able to reproduce the problem.