### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: model/org/eclipse/jdt/internal/core/BinaryMethod.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/BinaryMethod.java,v retrieving revision 1.107 diff -u -r1.107 BinaryMethod.java --- model/org/eclipse/jdt/internal/core/BinaryMethod.java 7 Sep 2010 03:17:29 -0000 1.107 +++ model/org/eclipse/jdt/internal/core/BinaryMethod.java 25 Nov 2010 08:59:39 -0000 @@ -302,8 +302,8 @@ return this.parameterNames = names; } } - // if still no parameter names, produce fake ones - return this.parameterNames = getRawParameterNames(paramCount); + // If still no parameter names, produce fake ones, but don't cache them (https://bugs.eclipse.org/bugs/show_bug.cgi?id=329671) + return getRawParameterNames(paramCount); } private char[][] splitParameters(char[] parametersSource, int paramCount) { // we have generic types as one of the parameter types #P org.eclipse.jdt.core.tests.model Index: src/org/eclipse/jdt/core/tests/model/CompletionTests.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests.java,v retrieving revision 1.233 diff -u -r1.233 CompletionTests.java --- src/org/eclipse/jdt/core/tests/model/CompletionTests.java 24 Nov 2010 16:56:38 -0000 1.233 +++ src/org/eclipse/jdt/core/tests/model/CompletionTests.java 25 Nov 2010 08:59:42 -0000 @@ -34,6 +34,8 @@ import org.eclipse.jdt.core.eval.IEvaluationContext; import org.eclipse.jdt.internal.codeassist.CompletionEngine; import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; +import org.eclipse.jdt.internal.core.JavaModelManager; +import org.eclipse.jdt.internal.core.JavaModelManager.PerProjectInfo; import org.eclipse.jdt.internal.core.eval.EvaluationContextWrapper; public class CompletionTests extends AbstractJavaModelCompletionTests { @@ -21856,4 +21858,52 @@ "myString1[LOCAL_VARIABLE_REF]{myString1, null, Ljava.lang.String;, myString1, null, " + (R_NON_STATIC + R_UNQUALIFIED + R_CASE + R_NON_RESTRICTED + R_EXACT_EXPECTED_TYPE) + "}", requestor.getResults()); } +// https://bugs.eclipse.org/bugs/show_bug.cgi?id=329671 +public void testBug329671() throws CoreException, IOException { + Map options = this.currentProject.getOptions(false); + Object timeout = options.get(JavaCore.TIMEOUT_FOR_PARAMETER_NAME_FROM_ATTACHED_JAVADOC); + options.put(JavaCore.TIMEOUT_FOR_PARAMETER_NAME_FROM_ATTACHED_JAVADOC, "1"); //$NON-NLS-1$ + this.currentProject.setOptions(options); + + try { + this.workingCopies = new ICompilationUnit[1]; + this.workingCopies[0] = getWorkingCopy( + "/Completion/src/p/Test.java", + "package p;"+ + "public class Test {\n" + + " void foo(bug.X x) {\n" + + " x.fo\n" + + " }\n" + + "}\n"); + + addLibrary( + "Completion", + "bug329671.jar", + null, + "bug329671_doc.zip", + false); + + try { + CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true); + String str = this.workingCopies[0].getSource(); + String completeBehind = "x.fo"; + int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length(); + this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner); + assertResults("foo[METHOD_REF]{foo(), Lbug.X;, (Ljava.lang.Object;)V, foo, (arg0), 35}", requestor.getResults()); + PerProjectInfo projectInfo = JavaModelManager.getJavaModelManager().getPerProjectInfoCheckExistence(this.currentProject.getProject()); + projectInfo.javadocCache.flush(); + options.put(JavaCore.TIMEOUT_FOR_PARAMETER_NAME_FROM_ATTACHED_JAVADOC, "5000"); //$NON-NLS-1$ + this.currentProject.setOptions(options); + requestor = new CompletionTestsRequestor2(true); + this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner); + assertResults("foo[METHOD_REF]{foo(), Lbug.X;, (Ljava.lang.Object;)V, foo, (param), 35}", requestor.getResults()); + } finally { + removeLibrary("Completion", "bug329671.jar"); + } + } finally { + if (timeout != null) + options.put(JavaCore.TIMEOUT_FOR_PARAMETER_NAME_FROM_ATTACHED_JAVADOC, timeout); + this.currentProject.setOptions(options); + } +} }