eclipse-jdt / eclipse.jdt.core

Eclipse Public License 2.0
161 stars 130 forks source link

[Sealed types][selection] Can't navigate in files in 2nd level child #2574

Closed DamnClin closed 4 months ago

DamnClin commented 4 months ago

Eclipse Version: 2024-06 (4.32.0) on Ubuntu

Create:

public sealed interface Top permits Middle {}
public sealed interface Middle extends Top permits Down {}
public record Down(String foo) implements Middle {}

Open Down and try ctrl + clic String: no action.

When using F3 on String:

image

("Problems opening an editor. Cannot read the array length because "superPermittedTypes" is null")

Will be the same for any element in this file or any file with a hierarchy looking like this one

iloveeclipse commented 4 months ago

Could you please attach the stack trace from the error log?

DamnClin commented 4 months ago

Could you please attach the stack trace from the error log?

java.lang.reflect.InvocationTargetException
    at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:396)
    at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:470)
    at org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog.run(ProgressMonitorJobsDialog.java:230)
    at org.eclipse.ui.internal.progress.ProgressManager.lambda$26(ProgressManager.java:819)
    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
    at org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(ProgressManager.java:849)
    at org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(ProgressManager.java:828)
    at org.eclipse.jdt.internal.ui.actions.SelectionConverter.performForkedCodeResolve(SelectionConverter.java:260)
    at org.eclipse.jdt.internal.ui.actions.SelectionConverter.codeResolveForked(SelectionConverter.java:172)
    at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:164)
    at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:278)
    at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:252)
    at org.eclipse.jface.action.Action.runWithEvent(Action.java:474)
    at org.eclipse.jface.commands.ActionHandler.execute(ActionHandler.java:124)
    at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:98)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
    at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:299)
    at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:233)
    at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:174)
    at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:165)
    at org.eclipse.core.commands.Command.executeWithChecks(Command.java:488)
    at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:485)
    at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:204)
    at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.executeCommand(KeyBindingDispatcher.java:308)
    at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.press(KeyBindingDispatcher.java:569)
    at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(KeyBindingDispatcher.java:644)
    at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.filterKeySequenceBindings(KeyBindingDispatcher.java:439)
    at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher$KeyDownFilter.handleEvent(KeyBindingDispatcher.java:96)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
    at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1954)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1616)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1643)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1626)
    at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1665)
    at org.eclipse.swt.widgets.Widget.gtk_key_press_event(Widget.java:994)
    at org.eclipse.swt.widgets.Control.gtk_key_press_event(Control.java:3999)
    at org.eclipse.swt.widgets.Composite.gtk_key_press_event(Composite.java:931)
    at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:2595)
    at org.eclipse.swt.widgets.Control.windowProc(Control.java:6833)
    at org.eclipse.swt.widgets.Display.windowProc(Display.java:6162)
    at org.eclipse.swt.internal.gtk3.GTK3.gtk_main_do_event(Native Method)
    at org.eclipse.swt.widgets.Display.eventProc(Display.java:1598)
    at org.eclipse.swt.internal.gtk3.GTK3.gtk_main_iteration_do(Native Method)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4514)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:152)
    at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
Caused by: java.lang.NullPointerException: Cannot read the array length because "superPermittedTypes" is null
    at org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.checkPermitsAndAdd(SourceTypeBinding.java:1345)
    at org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.checkPermitsInType(SourceTypeBinding.java:1206)
    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.internal.ui.actions.SelectionConverter.codeResolve(SelectionConverter.java:269)
    at org.eclipse.jdt.internal.ui.actions.SelectionConverter$1CodeResolveRunnable.lambda$0(SelectionConverter.java:253)
    at org.eclipse.jdt.internal.core.JavaModelManager.cacheZipFiles(JavaModelManager.java:5765)
    at org.eclipse.jdt.internal.core.JavaModelManager.callReadOnly(JavaModelManager.java:5754)
    at org.eclipse.jdt.core.JavaCore.callReadOnly(JavaCore.java:6130)
    at org.eclipse.jdt.internal.ui.actions.SelectionConverter$1CodeResolveRunnable.run(SelectionConverter.java:253)
    at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:124)
Root exception:
java.lang.NullPointerException: Cannot read the array length because "superPermittedTypes" is null
    at org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.checkPermitsAndAdd(SourceTypeBinding.java:1345)
    at org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.checkPermitsInType(SourceTypeBinding.java:1206)
    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.internal.ui.actions.SelectionConverter.codeResolve(SelectionConverter.java:269)
    at org.eclipse.jdt.internal.ui.actions.SelectionConverter$1CodeResolveRunnable.lambda$0(SelectionConverter.java:253)
    at org.eclipse.jdt.internal.core.JavaModelManager.cacheZipFiles(JavaModelManager.java:5765)
    at org.eclipse.jdt.internal.core.JavaModelManager.callReadOnly(JavaModelManager.java:5754)
    at org.eclipse.jdt.core.JavaCore.callReadOnly(JavaCore.java:6130)
    at org.eclipse.jdt.internal.ui.actions.SelectionConverter$1CodeResolveRunnable.run(SelectionConverter.java:253)
    at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:124)
iloveeclipse commented 4 months ago

Thanks, it's jdt.core issue.

srikanth-sankaran commented 4 months ago

I think my recent bug fix in this area may already have fixed this. Will check.

srikanth-sankaran commented 4 months ago

Yes, I can confirm that this problem is already fixed on master HEAD - problem went away with the fix for https://github.com/eclipse-jdt/eclipse.jdt.core/issues/2093

I will release a regression test and close this shortly