Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Keller2012-04-19 13:32:20 +0000
committerMarkus Keller2012-04-19 13:32:20 +0000
commitb767faa70d4fa2f4adf9baa65f5a0c7fa638bc36 (patch)
tree8350261311ffa9d5416dea66310528374079caa2
parent3748bebd337b2aae01ce2fd7883a5f8d7a91e578 (diff)
downloadeclipse.jdt.ui-b767faa70d4fa2f4adf9baa65f5a0c7fa638bc36.tar.gz
eclipse.jdt.ui-b767faa70d4fa2f4adf9baa65f5a0c7fa638bc36.tar.xz
eclipse.jdt.ui-b767faa70d4fa2f4adf9baa65f5a0c7fa638bc36.zip
Bug 377184: [content assist] Override method proposal does not format in subclass with type parameterv20120419-1332
-rw-r--r--org.eclipse.jdt.text.tests/src/org/eclipse/jdt/text/tests/contentassist/CodeCompletionTest.java60
-rw-r--r--org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/dom/Bindings.java9
2 files changed, 66 insertions, 3 deletions
diff --git a/org.eclipse.jdt.text.tests/src/org/eclipse/jdt/text/tests/contentassist/CodeCompletionTest.java b/org.eclipse.jdt.text.tests/src/org/eclipse/jdt/text/tests/contentassist/CodeCompletionTest.java
index 51af51e260..64fa71f174 100644
--- a/org.eclipse.jdt.text.tests/src/org/eclipse/jdt/text/tests/contentassist/CodeCompletionTest.java
+++ b/org.eclipse.jdt.text.tests/src/org/eclipse/jdt/text/tests/contentassist/CodeCompletionTest.java
@@ -1642,6 +1642,66 @@ public class CodeCompletionTest extends AbstractCompletionTest {
assertEquals(buf.toString(), doc.get());
}
+ public void testOverrideCompletion10_bug377184() throws Exception {
+ //https://bugs.eclipse.org/bugs/show_bug.cgi?id=377184
+ IPackageFragmentRoot sourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src");
+
+ IPackageFragment pack1= sourceFolder.createPackageFragment("test1", false, null);
+ StringBuffer buf= new StringBuffer();
+ buf.append("package test1;\n");
+ buf.append("class Super<T> {\n");
+ buf.append(" void foo(T t) {\n");
+ buf.append(" }\n");
+ buf.append("}\n");
+ buf.append("public class Impl<T2 extends Number> extends Super<T2> {\n");
+ buf.append(" foo//here\n");
+ buf.append("}\n");
+ String contents= buf.toString();
+
+ ICompilationUnit cu= pack1.createCompilationUnit("Impl.java", contents, false, null);
+
+ String str= "//here";
+
+ int offset= contents.indexOf(str);
+
+ CompletionProposalCollector collector= createCollector(cu, offset);
+ collector.setReplacementLength(0);
+
+ codeComplete(cu, offset, collector);
+
+ IJavaCompletionProposal[] proposals= collector.getJavaCompletionProposals();
+
+ IJavaCompletionProposal toStringProposal= null;
+
+ for (int i= 0; i < proposals.length; i++) {
+ if (proposals[i].getDisplayString().startsWith("foo")) {
+ toStringProposal= proposals[i];
+ }
+ }
+ assertNotNull("no proposal for foo(...)", toStringProposal);
+
+ IDocument doc= new Document(contents);
+ toStringProposal.apply(doc);
+
+ buf= new StringBuffer();
+ buf.append("package test1;\n");
+ buf.append("class Super<T> {\n");
+ buf.append(" void foo(T t) {\n");
+ buf.append(" }\n");
+ buf.append("}\n");
+ buf.append("public class Impl<T2 extends Number> extends Super<T2> {\n");
+ buf.append(" /* (non-Javadoc)\n");
+ buf.append(" * @see test1.Super#foo(java.lang.Object)\n");
+ buf.append(" */\n");
+ buf.append(" @Override\n");
+ buf.append(" void foo(T2 t) {\n");
+ buf.append(" //TODO\n");
+ buf.append(" super.foo(t);\n");
+ buf.append(" }//here\n");
+ buf.append("}\n");
+ assertEquals(buf.toString(), doc.get());
+ }
+
public void testSetterCompletion1() throws Exception {
IPackageFragmentRoot sourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src");
diff --git a/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/dom/Bindings.java b/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/dom/Bindings.java
index ff3ebf9847..1782f2bd48 100644
--- a/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/dom/Bindings.java
+++ b/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/dom/Bindings.java
@@ -782,9 +782,12 @@ public class Bindings {
buf.append(first.substring(lastIndex + 1, first.length()));
first= buf.toString();
}
- second= methodParameters[i].getErasure().getQualifiedName();
- if (!first.equals(second))
- return false;
+ second= methodParameters[i].getQualifiedName();
+ if (!first.equals(second)) {
+ second= methodParameters[i].getErasure().getQualifiedName();
+ if (!first.equals(second))
+ return false;
+ }
}
return true;
}

Back to the top