### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: codeassist/org/eclipse/jdt/internal/codeassist/impl/AssistParser.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/impl/AssistParser.java,v retrieving revision 1.82 diff -u -r1.82 AssistParser.java --- codeassist/org/eclipse/jdt/internal/codeassist/impl/AssistParser.java 25 Jan 2008 11:59:21 -0000 1.82 +++ codeassist/org/eclipse/jdt/internal/codeassist/impl/AssistParser.java 4 Apr 2008 12:06:14 -0000 @@ -285,6 +285,15 @@ super.consumeConstructorHeader(); pushOnElementStack(K_METHOD_DELIMITER); } +protected void consumeEnhancedForStatementHeaderInit(boolean hasModifiers) { + super.consumeEnhancedForStatementHeaderInit(hasModifiers); + + if (this.currentElement != null) { + LocalDeclaration localDecl = ((ForeachStatement)this.astStack[this.astPtr]).elementVariable; + this.lastCheckPoint = localDecl.sourceEnd + 1; + this.currentElement = this.currentElement.add(localDecl, 0); + } +} protected void consumeEnterAnonymousClassBody() { super.consumeEnterAnonymousClassBody(); popElement(K_SELECTOR); #P org.eclipse.jdt.core.tests.compiler Index: src/org/eclipse/jdt/core/tests/compiler/parser/GenericsCompletionParserTest.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/GenericsCompletionParserTest.java,v retrieving revision 1.31 diff -u -r1.31 GenericsCompletionParserTest.java --- src/org/eclipse/jdt/core/tests/compiler/parser/GenericsCompletionParserTest.java 21 Nov 2007 14:35:35 -0000 1.31 +++ src/org/eclipse/jdt/core/tests/compiler/parser/GenericsCompletionParserTest.java 4 Apr 2008 12:06:17 -0000 @@ -10943,4 +10943,47 @@ expectedReplacedSource, "full ast"); } +public void test0216_Diet() { + + String str = + "public class X {\n" + + " Object field = new Object(){\n" + + " void foo(List ss) {\n" + + " for(String s: ss){\n" + + " s.z\n" + + " }\n" + + " }\n" + + " };\n" + + "}\n"; + + String completeBehind = "s.z"; + int cursorLocation = str.lastIndexOf("s.z") + completeBehind.length() - 1; + String expectedCompletionNodeToString = ""; + String expectedParentNodeToString = ""; + String completionIdentifier = "z"; + String expectedReplacedSource = "s.z"; + String expectedUnitDisplayString = + "public class X {\n" + + " Object field = new Object() {\n" + + " void foo(List ss) {\n" + + " String s;\n" + + " {\n" + + " ;\n" + + " }\n" + + " }\n" + + " };\n" + + " public X() {\n" + + " }\n" + + "}\n"; + + checkDietParse( + str.toCharArray(), + cursorLocation, + expectedCompletionNodeToString, + expectedParentNodeToString, + expectedUnitDisplayString, + completionIdentifier, + expectedReplacedSource, + "diet ast"); +} }