diff options
author | Snjezana Peco | 2021-10-20 18:56:38 +0000 |
---|---|---|
committer | Jay Arthanareeswaran | 2021-10-28 09:52:04 +0000 |
commit | b99d598e02cd716886ec9fef1b2d05a7e5fe8618 (patch) | |
tree | 089053f39b3c72bba4146e3c8930a1d31a267ffc | |
parent | 45456cf6b1b9a6b77291fdbee8bc781a766292e7 (diff) | |
download | eclipse.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.java | 31 | ||||
-rw-r--r-- | org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SelectionRequestor.java | 2 |
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 { |