Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSnjezana Peco2021-10-20 18:56:38 +0000
committerJay Arthanareeswaran2021-10-28 09:52:04 +0000
commitb99d598e02cd716886ec9fef1b2d05a7e5fe8618 (patch)
tree089053f39b3c72bba4146e3c8930a1d31a267ffc
parent45456cf6b1b9a6b77291fdbee8bc781a766292e7 (diff)
downloadeclipse.jdt.core-b99d598e02cd716886ec9fef1b2d05a7e5fe8618.tar.gz
eclipse.jdt.core-b99d598e02cd716886ec9fef1b2d05a7e5fe8618.tar.xz
eclipse.jdt.core-b99d598e02cd716886ec9fef1b2d05a7e5fe8618.zip
Bug 576778 - IllegalArgumentException when hovering over anonymous classI20211028-1800
Change-Id: If333cd875324431624452b00a73ba2f4374b9360 Reviewed-on: https://git.eclipse.org/r/c/jdt/eclipse.jdt.core/+/186739 Tested-by: JDT Bot <jdt-bot@eclipse.org> Reviewed-by: Kenneth Styrberg <kenneth@kean.nu> Reviewed-by: Jay Arthanareeswaran <jarthana@in.ibm.com>
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/TypeResolveTests.java31
-rw-r--r--org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SelectionRequestor.java2
2 files changed, 30 insertions, 3 deletions
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/TypeResolveTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/TypeResolveTests.java
index 12ca893e3f..d9d9e55fdf 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/TypeResolveTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/TypeResolveTests.java
@@ -17,8 +17,6 @@ import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
-import junit.framework.Test;
-
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jdt.core.Flags;
@@ -46,6 +44,8 @@ import org.eclipse.jdt.internal.core.NameLookup;
import org.eclipse.jdt.internal.core.NameLookup.Answer;
import org.eclipse.jdt.internal.core.SourceType;
+import junit.framework.Test;
+
@SuppressWarnings({"rawtypes", "unchecked"})
public class TypeResolveTests extends ModifyingResourceTests {
ICompilationUnit cu;
@@ -1670,4 +1670,31 @@ public void testBug575503() throws Exception{
deleteProject("P");
}
}
+// https://bugs.eclipse.org/bugs/show_bug.cgi?id=576778
+public void testBug576778() throws Exception {
+ try {
+ createJava11Project("P", new String[] {"src"});
+ String source = "package p;\n\n"
+ +"public class X {\n"
+ + " public static void main(String[] args) {\n"
+ + " var runnable = new Runnable() {\n"
+ + " public void run() {}\n"
+ + " };\n"
+ + " runnable.run();\n"
+ + " }\n"
+ + "}\n";
+ createFolder("/P/src/p");
+ createFile("/P/src/p/X.java", source);
+ waitForAutoBuild();
+ ICompilationUnit unit = getCompilationUnit("/P/src/p/X.java");
+ String select = "runnable";
+ IJavaElement[] elements = unit.codeSelect(source.indexOf(select), select.length());
+ assertEquals("should not be empty", 1, elements.length);
+ ILocalVariable variable = (ILocalVariable) elements[0];
+ String signature= variable.getTypeSignature();
+ assertEquals("incorrect type", "Qvar;", signature);
+ } finally {
+ deleteProject("P");
+ }
+}
}
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SelectionRequestor.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SelectionRequestor.java
index 51f82007f0..f26a403067 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SelectionRequestor.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SelectionRequestor.java
@@ -481,7 +481,7 @@ public void acceptLocalVariable(LocalVariableBinding binding, org.eclipse.jdt.in
LocalVariable localVar = null;
if(parent != null) {
String typeSig = null;
- if (local.type == null || local.type.isTypeNameVar(binding.declaringScope)) {
+ if (local.type == null || (local.type.isTypeNameVar(binding.declaringScope) && !binding.type.isAnonymousType())) {
if (local.initialization instanceof CastExpression) {
typeSig = Util.typeSignature(((CastExpression) local.initialization).type);
} else {

Back to the top