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

Collapse All | Expand All

(-)dom/org/eclipse/jdt/core/dom/ASTConverter.java (-3 / +29 lines)
Lines 892-898 Link Here
892
		return assertStatement;
892
		return assertStatement;
893
	}
893
	}
894
	
894
	
895
	public Assignment convert(org.eclipse.jdt.internal.compiler.ast.Assignment expression) {
895
	public Expression convert(org.eclipse.jdt.internal.compiler.ast.Assignment expression) {
896
		if(isRHSRemovable(expression.expression)) {
897
			return convert(expression.lhs);
898
		}
899
		if(expression.expression instanceof org.eclipse.jdt.internal.compiler.ast.SingleNameReference) {
900
			// check if only the left hand side of the assignment should be returned.
901
			org.eclipse.jdt.internal.compiler.ast.SingleNameReference rhs = 
902
				(org.eclipse.jdt.internal.compiler.ast.SingleNameReference)expression.expression;
903
			if(rhs.token == RecoveryScanner.FAKE_IDENTIFIER && // the rigth hand side must be a fake initializer
904
					expression.lhs.sourceEnd == expression.sourceEnd) { // the '=' of th eassigment must be misssing
905
				return convert(expression.lhs);
906
			}
907
		}
908
		
896
		Assignment assignment = new Assignment(this.ast);
909
		Assignment assignment = new Assignment(this.ast);
897
		if (this.resolveBindings) {
910
		if (this.resolveBindings) {
898
			recordNodes(assignment, expression);
911
			recordNodes(assignment, expression);
Lines 2939-2945 Link Here
2939
		name.setSourceRange(fieldDeclaration.sourceStart, fieldDeclaration.sourceEnd - fieldDeclaration.sourceStart + 1);
2952
		name.setSourceRange(fieldDeclaration.sourceStart, fieldDeclaration.sourceEnd - fieldDeclaration.sourceStart + 1);
2940
		variableDeclarationFragment.setName(name);
2953
		variableDeclarationFragment.setName(name);
2941
		int start = fieldDeclaration.sourceEnd;
2954
		int start = fieldDeclaration.sourceEnd;
2942
		if (fieldDeclaration.initialization != null) {
2955
		if (fieldDeclaration.initialization != null &&
2956
				!isRHSRemovable(fieldDeclaration.initialization)) {
2943
			final Expression expression = convert(fieldDeclaration.initialization);
2957
			final Expression expression = convert(fieldDeclaration.initialization);
2944
			variableDeclarationFragment.setInitializer(expression);
2958
			variableDeclarationFragment.setInitializer(expression);
2945
			start = expression.getStartPosition() + expression.getLength();
2959
			start = expression.getStartPosition() + expression.getLength();
Lines 2968-2974 Link Here
2968
		variableDeclarationFragment.setName(name);
2982
		variableDeclarationFragment.setName(name);
2969
		int start = localDeclaration.sourceEnd;
2983
		int start = localDeclaration.sourceEnd;
2970
		org.eclipse.jdt.internal.compiler.ast.Expression initialization = localDeclaration.initialization;
2984
		org.eclipse.jdt.internal.compiler.ast.Expression initialization = localDeclaration.initialization;
2971
		boolean hasInitialization = initialization != null;
2985
		boolean hasInitialization = initialization != null && !isRHSRemovable(localDeclaration.initialization);
2972
		if (hasInitialization) {
2986
		if (hasInitialization) {
2973
			final Expression expression = convert(initialization);
2987
			final Expression expression = convert(initialization);
2974
			variableDeclarationFragment.setInitializer(expression);
2988
			variableDeclarationFragment.setInitializer(expression);
Lines 3530-3535 Link Here
3530
		return false;
3544
		return false;
3531
	}
3545
	}
3532
	
3546
	
3547
	private boolean isRHSRemovable(org.eclipse.jdt.internal.compiler.ast.Expression rhs) {
3548
		if(rhs instanceof org.eclipse.jdt.internal.compiler.ast.SingleNameReference) {
3549
			// check if the right hand side is a fake identifer and can be removed.
3550
			org.eclipse.jdt.internal.compiler.ast.SingleNameReference singleName = 
3551
				(org.eclipse.jdt.internal.compiler.ast.SingleNameReference)rhs;
3552
			if(singleName.token == RecoveryScanner.FAKE_IDENTIFIER) { // the rigth hand side must be a fake initializer
3553
				return true;
3554
			}
3555
		}
3556
		return false;
3557
	}
3558
		
3533
	private void lookupForScopes() {
3559
	private void lookupForScopes() {
3534
		if (this.pendingNameScopeResolution != null) {
3560
		if (this.pendingNameScopeResolution != null) {
3535
			for (Iterator iterator = this.pendingNameScopeResolution.iterator(); iterator.hasNext(); ) {
3561
			for (Iterator iterator = this.pendingNameScopeResolution.iterator(); iterator.hasNext(); ) {

Return to bug 129330