### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core.tests.model Index: src/org/eclipse/jdt/core/tests/model/CompletionTests_1_5.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests_1_5.java,v retrieving revision 1.67.4.1 diff -u -r1.67.4.1 CompletionTests_1_5.java --- src/org/eclipse/jdt/core/tests/model/CompletionTests_1_5.java 20 Nov 2006 11:55:10 -0000 1.67.4.1 +++ src/org/eclipse/jdt/core/tests/model/CompletionTests_1_5.java 20 Nov 2006 12:12:07 -0000 @@ -8816,4 +8816,33 @@ "Test2[TYPE_REF]{Test2, test, Ltest.Test2;, null, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_EXACT_NAME + R_EXPECTED_TYPE + R_UNQUALIFIED + R_NON_RESTRICTED) + "}", requestor.getResults()); } +//https://bugs.eclipse.org/bugs/show_bug.cgi?id=154993 +public void test0297() throws JavaModelException { + this.workingCopies = new ICompilationUnit[2]; + this.workingCopies[0] = getWorkingCopy( + "/Completion/src3/test/Test.java", + "package test;\n" + + "public class Test {\n" + + " String description = \"Some description\";\n" + + " @Description(this.description)\n" + + " public void method() {\n" + + " }"); + + this.workingCopies[1] = getWorkingCopy( + "/Completion/src3/test/Description.java", + "package test;\n" + + "public @interface Description {\n" + + " String value();\n" + + "}"); + + CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true); + String str = this.workingCopies[0].getSource(); + String completeBehind = "this."; + int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length(); + this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner); + + assertResults( + "", + requestor.getResults()); +} } #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.292.4.1 diff -u -r1.292.4.1 CompletionEngine.java --- codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java 20 Oct 2006 14:11:50 -0000 1.292.4.1 +++ codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java 20 Nov 2006 12:12:10 -0000 @@ -999,18 +999,20 @@ this.completionToken = access.token; - if (!this.requestor.isIgnored(CompletionProposal.KEYWORD)) { - findKeywords(this.completionToken, new char[][]{Keywords.NEW}, false); + if (!access.isInsideAnnotation) { + if (!this.requestor.isIgnored(CompletionProposal.KEYWORD)) { + findKeywords(this.completionToken, new char[][]{Keywords.NEW}, false); + } + + findFieldsAndMethods( + this.completionToken, + ((TypeBinding) qualifiedBinding).capture(scope, access.receiver.sourceEnd), + scope, + access, + scope, + false, + access.receiver instanceof SuperReference); } - - findFieldsAndMethods( - this.completionToken, - ((TypeBinding) qualifiedBinding).capture(scope, access.receiver.sourceEnd), - scope, - access, - scope, - false, - access.receiver instanceof SuperReference); } else if (astNode instanceof CompletionOnMessageSend) { setSourceRange(astNode.sourceStart, astNode.sourceEnd, false); Index: codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMemberAccess.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMemberAccess.java,v retrieving revision 1.21 diff -u -r1.21 CompletionOnMemberAccess.java --- codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMemberAccess.java 10 May 2006 18:03:43 -0000 1.21 +++ codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMemberAccess.java 20 Nov 2006 12:12:10 -0000 @@ -37,9 +37,12 @@ public class CompletionOnMemberAccess extends FieldReference { - public CompletionOnMemberAccess(char[] source, long pos) { + public boolean isInsideAnnotation; + + public CompletionOnMemberAccess(char[] source, long pos, boolean isInsideAnnotation) { super(source, pos); + this.isInsideAnnotation = isInsideAnnotation; } public StringBuffer printExpression(int indent, StringBuffer output) { Index: codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java,v retrieving revision 1.157.4.1 diff -u -r1.157.4.1 CompletionParser.java --- codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java 20 Nov 2006 11:55:15 -0000 1.157.4.1 +++ codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java 20 Nov 2006 12:12:11 -0000 @@ -3611,7 +3611,7 @@ private void pushCompletionOnMemberAccessOnExpressionStack(boolean isSuperAccess) { char[] source = identifierStack[identifierPtr]; long pos = identifierPositionStack[identifierPtr--]; - CompletionOnMemberAccess fr = new CompletionOnMemberAccess(source, pos); + CompletionOnMemberAccess fr = new CompletionOnMemberAccess(source, pos, isInsideAnnotation()); this.assistNode = fr; this.lastCheckPoint = fr.sourceEnd + 1; identifierLengthPtr--;