Skip to content

"IAE at org.eclipse.jdt.core.Signature.encodeQualifiedName" on hyperlink request #4218

@nlisker

Description

@nlisker

Split from eclipse-jdt/eclipse.jdt.ui#2286.

import java.util.concurrent.Callable;

public class Test {

	public static <T> void createObjectBinding(final Callable<T> func) {
		return;
	}

	sealed interface Index {
		enum SS implements Index {}
		enum TS implements Index {}
	}
	
	public abstract sealed class Entity<S extends Index> permits Struct, Time {}
	
	final class Struct extends Entity<Index.SS> {}
	
	final class Time extends Entity<Index.TS> {
		
		Struct getStruct() {
			return null;
		}

		public Object getOther() {
			return null;
		}
	}
	
	private <T> T createMap(Object other) {
		return null;
	}
	
	private void setMaterials(Time entity) {
		var selfIllumImage = createObjectBinding(() -> {
				var entity2 = entity.getStruct() == null ? entity : entity.getStruct();
				return createMap(entity.getOther());
		});
	}
}

Hold ctrl and hover over entity2. Here the exception is IAE:

java.lang.IllegalArgumentException: generics.Test.Entity<? extends java.lang.Enum<?> & generics.Test.Index>
	at org.eclipse.jdt.core.Signature.encodeQualifiedName(Signature.java:1384)
	at org.eclipse.jdt.core.Signature.encodeTypeSignature(Signature.java:1506)
	at org.eclipse.jdt.core.Signature.encodeTypeSignature(Signature.java:1483)
	at org.eclipse.jdt.core.Signature.encodeTypeSignature(Signature.java:1514)
	at org.eclipse.jdt.core.Signature.createCharArrayTypeSignature(Signature.java:1106)
	at org.eclipse.jdt.core.Signature.createTypeSignature(Signature.java:1304)
	at org.eclipse.jdt.internal.core.SelectionRequestor.acceptLocalVariable(SelectionRequestor.java:428)
	at org.eclipse.jdt.internal.codeassist.SelectionEngine.selectFrom(SelectionEngine.java:1353)
	at org.eclipse.jdt.internal.codeassist.SelectionEngine.select(SelectionEngine.java:1043)
	at org.eclipse.jdt.internal.core.Openable.codeSelect(Openable.java:171)
	at org.eclipse.jdt.internal.core.CompilationUnit.codeSelect(CompilationUnit.java:476)
	at org.eclipse.jdt.internal.core.CompilationUnit.codeSelect(CompilationUnit.java:466)
	at org.eclipse.jdt.internal.ui.javaeditor.JavaElementHyperlinkDetector.detectHyperlinksCached(JavaElementHyperlinkDetector.java:127)
	at org.eclipse.jdt.internal.ui.javaeditor.JavaElementHyperlinkDetector.lambda$0(JavaElementHyperlinkDetector.java:84)
	at org.eclipse.jdt.internal.core.JavaModelManager.cacheZipFiles(JavaModelManager.java:5708)
	at org.eclipse.jdt.internal.core.JavaModelManager.callReadOnly(JavaModelManager.java:5697)
	at org.eclipse.jdt.core.JavaCore.callReadOnly(JavaCore.java:6156)
	at org.eclipse.jdt.internal.ui.javaeditor.JavaElementHyperlinkDetector.detectHyperlinks(JavaElementHyperlinkDetector.java:84)
	at org.eclipse.ui.texteditor.HyperlinkDetectorRegistry$HyperlinkDetectorDelegate.detectHyperlinks(HyperlinkDetectorRegistry.java:81)
	at org.eclipse.jface.text.hyperlink.HyperlinkManager.findHyperlinks(HyperlinkManager.java:289)
	at org.eclipse.jface.text.hyperlink.HyperlinkManager.findHyperlinks(HyperlinkManager.java:262)
	at org.eclipse.jface.text.hyperlink.HyperlinkManager.mouseMove(HyperlinkManager.java:457)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:250)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4360)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1214)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4158)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3746)
	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:153)
	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:678)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:583)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:185)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298)
	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:627)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1431)
	Suppressed: java.lang.Throwable: Source line 43 :
-----
			return null;
		}
	}
	
	private <T> T createMap(Object other) {
		return null;
	}
	
	private void setMaterials(Time entity) {
		var selfIllumImage = createObjectBinding(() -> {
				var e|ntity2 = entity.getStruct() == null ? entity : entity.getStruct();
-----
		at org.eclipse.jdt.internal.ui.util.SelectionUtil.logException(SelectionUtil.java:157)
		at org.eclipse.jdt.internal.ui.javaeditor.JavaElementHyperlinkDetector.detectHyperlinksCached(JavaElementHyperlinkDetector.java:146)
		... 34 more

Eclipse Java Development Tools 3.20.300.v20250618-2149
Eclipse Platform 4.37.0.I20250618-1800

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions