Skip to content

Java Language Server fails with classes that extends sealed class. #3636

Closed
eclipse-jdtls/eclipse.jdt.ls
#3195
@UnnamedXAer

Description

@UnnamedXAer

I'm not able to use rename, quick fix, go to definition when editing class that extends sealed class.

Environment
  • Operating System: Windows 11
  • JDK version: 22
  • Visual Studio Code version: Version: 1.88.1 (user setup)
  • Java extension version: v1.30.0
Steps To Reproduce
  1. Try to rename argument of method in class that extends sealed class.

[Please attach a sample project reproducing the error]
https://github.com/UnnamedXAer/java_language_server_issue_sealed

// .../Storage.java
public abstract sealed class Storage implements AutoCloseable
    permits SqlStorage {
  public abstract Object get(int id) throws Exception;
}
// .../SqlStorage.java
public final class SqlStorage extends Storage {

  @Override
  public void close() throws Exception {
    // TODO Auto-generated method stub
    throw new UnsupportedOperationException("Unimplemented method 'close'");
  }

  @Override
  public Object get(int id) throws Exception {
    // TODO Auto-generated method stub
    throw new UnsupportedOperationException("Unimplemented method 'get'");
  }

  private String add(String a) {
    return String.format("%s%s", a, a);
  }
}

logs

https://github.com/UnnamedXAer/java_language_server_issue_sealed/blob/master/README.md#full-log

!ENTRY org.eclipse.jdt.ls.core 4 0 2024-04-30 08:54:03.183
!MESSAGE Error computing hover
!STACK 0
java.lang.NullPointerException: Cannot read the array length because "superPermittedTypes" is null
	at org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.checkPermitsAndAdd(SourceTypeBinding.java:1346)
	at org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.checkPermitsInType(SourceTypeBinding.java:1202)
	at org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.faultInTypesForFieldsAndMethods(SourceTypeBinding.java:1116)
	at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultInTypes(CompilationUnitScope.java:608)
	at org.eclipse.jdt.internal.codeassist.SelectionEngine.select(SelectionEngine.java:1076)
	at org.eclipse.jdt.internal.core.Openable.codeSelect(Openable.java:166)
	at org.eclipse.jdt.internal.core.CompilationUnit.codeSelect(CompilationUnit.java:382)
	at org.eclipse.jdt.internal.core.CompilationUnit.codeSelect(CompilationUnit.java:375)
	at org.eclipse.jdt.ls.core.internal.JDTUtils.findElementsAtSelection(JDTUtils.java:1036)
	at org.eclipse.jdt.ls.core.internal.HoverInfoProvider.computeHover(HoverInfoProvider.java:101)
	at org.eclipse.jdt.ls.core.internal.handlers.HoverHandler.computeHover(HoverHandler.java:57)
	at org.eclipse.jdt.ls.core.internal.handlers.HoverHandler.hover(HoverHandler.java:43)
	at org.eclipse.jdt.ls.core.internal.handlers.JDTLanguageServer.lambda$5(JDTLanguageServer.java:666)
	at org.eclipse.jdt.ls.core.internal.BaseJDTLanguageServer.lambda$0(BaseJDTLanguageServer.java:87)
	at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(Unknown Source)
	at java.base/java.util.concurrent.CompletableFuture$Completion.exec(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)
Current Result

Popup saying 'Internal error';
image

Expected Result

Rename box;
image

Additional Informations

In more advanced scenarios (classes) most of the LSP related features do not work.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions