### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: dom/org/eclipse/jdt/core/dom/ASTRecoveryPropagator.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ASTRecoveryPropagator.java,v retrieving revision 1.4 diff -u -r1.4 ASTRecoveryPropagator.java --- dom/org/eclipse/jdt/core/dom/ASTRecoveryPropagator.java 22 Feb 2006 14:48:52 -0000 1.4 +++ dom/org/eclipse/jdt/core/dom/ASTRecoveryPropagator.java 7 Apr 2006 15:18:40 -0000 @@ -11,10 +11,13 @@ package org.eclipse.jdt.core.dom; +import java.util.List; import java.util.Vector; import org.eclipse.jdt.core.compiler.CategorizedProblem; +import org.eclipse.jdt.core.compiler.CharOperation; import org.eclipse.jdt.core.compiler.IProblem; +import org.eclipse.jdt.internal.compiler.parser.RecoveryScanner; import org.eclipse.jdt.internal.compiler.parser.RecoveryScannerData; import org.eclipse.jdt.internal.compiler.parser.TerminalTokens; import org.eclipse.jdt.internal.compiler.util.HashtableOfObjectToIntArray; @@ -335,4 +338,42 @@ } return foundProblems; } + + public void endVisit(ExpressionStatement node) { + endVisitNode(node); + if ((node.getFlags() & ASTNode.RECOVERED) == 0) return; + Expression expression = node.getExpression(); + if (expression.getNodeType() == ASTNode.ASSIGNMENT) { + Assignment assignment = (Assignment) expression; + Expression rightHandSide = assignment.getRightHandSide(); + if (rightHandSide.getNodeType() == ASTNode.SIMPLE_NAME) { + SimpleName simpleName = (SimpleName) rightHandSide; + if (CharOperation.equals(RecoveryScanner.FAKE_IDENTIFIER, simpleName.getIdentifier().toCharArray())) { + Expression expression2 = assignment.getLeftHandSide(); + // unparent the expression to add it in the expression stateemnt + expression2.setParent(null, Assignment.LEFT_HAND_SIDE_PROPERTY); + expression2.setFlags(expression2.getFlags() | ASTNode.RECOVERED); + node.setExpression(expression2); + } + } + } + } + + public void endVisit(VariableDeclarationStatement node) { + endVisitNode(node); + List fragments = node.fragments(); + for (int i = 0, max = fragments.size(); i