Bug 549126 - [code mining] Show method parameter names for enum
constructors
Change-Id: Id573e513d64f79f5dab61b4dd9d9d7340fc3c7ca
diff --git a/org.eclipse.jdt.text.tests/src/org/eclipse/jdt/text/tests/codemining/ParameterNamesCodeMiningTest.java b/org.eclipse.jdt.text.tests/src/org/eclipse/jdt/text/tests/codemining/ParameterNamesCodeMiningTest.java
index 60f9cdc..9e2fda0 100644
--- a/org.eclipse.jdt.text.tests/src/org/eclipse/jdt/text/tests/codemining/ParameterNamesCodeMiningTest.java
+++ b/org.eclipse.jdt.text.tests/src/org/eclipse/jdt/text/tests/codemining/ParameterNamesCodeMiningTest.java
@@ -341,6 +341,28 @@
assertEquals(2, fParameterNameCodeMiningProvider.provideCodeMinings(viewer, new NullProgressMonitor()).get().size());
}
+ public void testBug549126() throws Exception {
+ String contents= "public enum TestEnum {\n" +
+ " A(\"bla\", null);\n" +
+ "\n" +
+ " public final String string;\n" +
+ " public final Object object;\n" +
+ "\n" +
+ " TestEnum(String string, Object object) {\n" +
+ " this.string = string;\n" +
+ " this.object = object;\n" +
+ " }\n" +
+ "}\n" +
+ "";
+ ICompilationUnit compilationUnit= fPackage.createCompilationUnit("TestEnum.java", contents, true, new NullProgressMonitor());
+ JavaEditor editor= (JavaEditor) EditorUtility.openInEditor(compilationUnit);
+ fParameterNameCodeMiningProvider.setContext(editor);
+ JavaSourceViewer viewer= (JavaSourceViewer)editor.getViewer();
+ waitReconciled(viewer);
+
+ assertEquals(2, fParameterNameCodeMiningProvider.provideCodeMinings(viewer, new NullProgressMonitor()).get().size());
+ }
+
private static boolean welcomeClosed;
private static void closeIntro(final IWorkbench wb) {
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/CalleeJavaMethodParameterVisitor.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/CalleeJavaMethodParameterVisitor.java
index 00712b8..7ca0424 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/CalleeJavaMethodParameterVisitor.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/CalleeJavaMethodParameterVisitor.java
@@ -23,6 +23,7 @@
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.dom.ClassInstanceCreation;
import org.eclipse.jdt.core.dom.ConstructorInvocation;
+import org.eclipse.jdt.core.dom.EnumConstantDeclaration;
import org.eclipse.jdt.core.dom.Expression;
import org.eclipse.jdt.core.dom.IMethodBinding;
import org.eclipse.jdt.core.dom.MethodInvocation;
@@ -84,6 +85,19 @@
}
@Override
+ public boolean visit(EnumConstantDeclaration enumConstantDeclaration) {
+ List<?> arguments= enumConstantDeclaration.arguments();
+ if (!arguments.isEmpty()) {
+ IMethodBinding constructorBinding= enumConstantDeclaration.resolveConstructorBinding();
+ if (constructorBinding != null) {
+ IMethod method = resolveMethodBinding(constructorBinding);
+ collectParameterNamesCodeMinings(method, arguments, constructorBinding.isVarargs());
+ }
+ }
+ return super.visit(enumConstantDeclaration);
+ }
+
+ @Override
public boolean visit(MethodInvocation methodInvocation) {
List<?> arguments= methodInvocation.arguments();
if (!arguments.isEmpty()) {