diff options
| author | Markus Keller | 2012-04-19 13:32:20 +0000 |
|---|---|---|
| committer | Markus Keller | 2012-04-19 13:32:20 +0000 |
| commit | b767faa70d4fa2f4adf9baa65f5a0c7fa638bc36 (patch) | |
| tree | 8350261311ffa9d5416dea66310528374079caa2 | |
| parent | 3748bebd337b2aae01ce2fd7883a5f8d7a91e578 (diff) | |
| download | eclipse.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
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; } |
