### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java,v retrieving revision 1.390 diff -u -r1.390 CompletionEngine.java --- codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java 5 Mar 2009 13:49:05 -0000 1.390 +++ codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java 27 Mar 2009 08:34:11 -0000 @@ -790,8 +790,12 @@ } if(!CharOperation.equals(packageName, this.currentPackageName)) { - if (!proposeType) continue next; - proposeConstructor = false; + + if((typeModifiers & ClassFileConstants.AccAbstract) == 0 || + (modifiers & ClassFileConstants.AccProtected) == 0) { + if (!proposeType) continue next; + proposeConstructor = false; + } } } } #P org.eclipse.jdt.core.tests.model Index: src/org/eclipse/jdt/core/tests/model/CompletionTests2.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests2.java,v retrieving revision 1.45 diff -u -r1.45 CompletionTests2.java --- src/org/eclipse/jdt/core/tests/model/CompletionTests2.java 30 Jan 2009 15:47:19 -0000 1.45 +++ src/org/eclipse/jdt/core/tests/model/CompletionTests2.java 27 Mar 2009 08:35:35 -0000 @@ -2766,6 +2766,7 @@ JavaCore.setOptions(oldOptions); } } + public void testBug79288() throws Exception { try { // create variable @@ -4897,4 +4898,56 @@ this.deleteExternalFile(externalJar2); } } +public void testBug270113_01() throws Exception { + Hashtable oldOptions = JavaCore.getOptions(); + + try { + Hashtable options = new Hashtable(oldOptions); + options.put(JavaCore.CODEASSIST_VISIBILITY_CHECK, JavaCore.ENABLED); + JavaCore.setOptions(options); + + IJavaProject p = createJavaProject("P", new String[] {"src"}, new String[]{"JCL_LIB", "/P/lib270113.jar"}, "bin"); + + createJar(new String[] { + "p270113/AllConstructors01.java", + "package p270113;\n" + + "public abstract class AllConstructors01 {\n" + + " protected AllConstructors01(int i) {}\n" + + "}" + }, p.getProject().getLocation().append("lib270113.jar").toOSString()); + + refresh(p); + + waitUntilIndexesReady(); + + this.workingCopies = new ICompilationUnit[1]; + this.workingCopies[0] = getWorkingCopy( + "/P/src/test/Test.java", + "package test;"+ + "public class Test {\n" + + " void foo() {\n" + + " new AllConstructors\n" + + " }\n" + + "}"); + + // do completion + CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true, false, false, true, true); + requestor.allowAllRequiredProposals(); + NullProgressMonitor monitor = new NullProgressMonitor(); + + String str = this.workingCopies[0].getSource(); + String completeBehind = "AllConstructors"; + int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length(); + this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner, monitor); + + assertResults( + "AllConstructors01[ANONYMOUS_CLASS_CONSTRUCTOR_INVOCATION]{(), Lp270113.AllConstructors01;, (I)V, AllConstructors01, (i), "+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_NON_RESTRICTED)+"}\n" + + " AllConstructors01[TYPE_REF]{p270113.AllConstructors01, p270113, Lp270113.AllConstructors01;, null, null, "+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_NON_RESTRICTED)+"}", + requestor.getResults()); + } finally { + deleteProject("P"); + + JavaCore.setOptions(oldOptions); + } +} }