View | Details | Raw Unified | Return to bug 129330 | Differences between
and this patch

Collapse All | Expand All

(-)dom/org/eclipse/jdt/core/dom/ASTRecoveryPropagator.java (+41 lines)
Lines 11-20 Link Here
11
11
12
package org.eclipse.jdt.core.dom;
12
package org.eclipse.jdt.core.dom;
13
13
14
import java.util.List;
14
import java.util.Vector;
15
import java.util.Vector;
15
16
16
import org.eclipse.jdt.core.compiler.CategorizedProblem;
17
import org.eclipse.jdt.core.compiler.CategorizedProblem;
18
import org.eclipse.jdt.core.compiler.CharOperation;
17
import org.eclipse.jdt.core.compiler.IProblem;
19
import org.eclipse.jdt.core.compiler.IProblem;
20
import org.eclipse.jdt.internal.compiler.parser.RecoveryScanner;
18
import org.eclipse.jdt.internal.compiler.parser.RecoveryScannerData;
21
import org.eclipse.jdt.internal.compiler.parser.RecoveryScannerData;
19
import org.eclipse.jdt.internal.compiler.parser.TerminalTokens;
22
import org.eclipse.jdt.internal.compiler.parser.TerminalTokens;
20
import org.eclipse.jdt.internal.compiler.util.HashtableOfObjectToIntArray;
23
import org.eclipse.jdt.internal.compiler.util.HashtableOfObjectToIntArray;
Lines 335-338 Link Here
335
		}
338
		}
336
		return foundProblems;
339
		return foundProblems;
337
	}
340
	}
341
342
	public void endVisit(ExpressionStatement node) {
343
		endVisitNode(node);
344
		if ((node.getFlags() & ASTNode.RECOVERED) == 0) return; 
345
		Expression expression = node.getExpression();
346
		if (expression.getNodeType() == ASTNode.ASSIGNMENT) {
347
			Assignment assignment = (Assignment) expression;
348
			Expression rightHandSide = assignment.getRightHandSide();
349
			if (rightHandSide.getNodeType() == ASTNode.SIMPLE_NAME) {
350
				SimpleName simpleName = (SimpleName) rightHandSide;
351
				if (CharOperation.equals(RecoveryScanner.FAKE_IDENTIFIER, simpleName.getIdentifier().toCharArray())) {
352
					Expression expression2 =  assignment.getLeftHandSide();
353
					// unparent the expression to add it in the expression stateemnt
354
					expression2.setParent(null, Assignment.LEFT_HAND_SIDE_PROPERTY);
355
					expression2.setFlags(expression2.getFlags() | ASTNode.RECOVERED);
356
					node.setExpression(expression2);
357
				}
358
			}
359
		}
360
	}
361
	
362
	public void endVisit(VariableDeclarationStatement node) {
363
		endVisitNode(node);
364
		List fragments = node.fragments();
365
		for (int i = 0, max = fragments.size(); i <max; i++) {
366
			VariableDeclarationFragment fragment = (VariableDeclarationFragment) fragments.get(i);
367
			Expression expression = fragment.getInitializer();
368
			if (expression == null) continue;
369
			if ((expression.getFlags() & ASTNode.RECOVERED) == 0) continue;
370
			if (expression.getNodeType() == ASTNode.SIMPLE_NAME) {
371
				SimpleName simpleName = (SimpleName) expression;
372
				if (CharOperation.equals(RecoveryScanner.FAKE_IDENTIFIER, simpleName.getIdentifier().toCharArray())) {
373
					fragment.setInitializer(null);
374
					fragment.setFlags(node.getFlags() | ASTNode.RECOVERED);
375
				}			
376
			}
377
		}
378
	}
338
}
379
}

Return to bug 129330