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

Collapse All | Expand All

(-)dom/org/eclipse/jdt/core/dom/ASTParser.java (-3 / +5 lines)
Lines 25-31 Link Here
25
import org.eclipse.jdt.core.compiler.CharOperation;
25
import org.eclipse.jdt.core.compiler.CharOperation;
26
import org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration;
26
import org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration;
27
import org.eclipse.jdt.internal.compiler.ast.ConstructorDeclaration;
27
import org.eclipse.jdt.internal.compiler.ast.ConstructorDeclaration;
28
import org.eclipse.jdt.internal.compiler.ast.Statement;
29
import org.eclipse.jdt.internal.compiler.env.IBinaryType;
28
import org.eclipse.jdt.internal.compiler.env.IBinaryType;
30
import org.eclipse.jdt.internal.compiler.parser.RecoveryScanner;
29
import org.eclipse.jdt.internal.compiler.parser.RecoveryScanner;
31
import org.eclipse.jdt.internal.compiler.parser.RecoveryScannerData;
30
import org.eclipse.jdt.internal.compiler.parser.RecoveryScannerData;
Lines 978-991 Link Here
978
				compilationUnit.setLineEndTable(recordedParsingInformation.lineEnds);
977
				compilationUnit.setLineEndTable(recordedParsingInformation.lineEnds);
979
				if (constructorDeclaration != null) {
978
				if (constructorDeclaration != null) {
980
					Block block = ast.newBlock();
979
					Block block = ast.newBlock();
981
					Statement[] statements = constructorDeclaration.statements;
980
					org.eclipse.jdt.internal.compiler.ast.Statement[] statements = constructorDeclaration.statements;
982
					if (statements != null) {
981
					if (statements != null) {
983
						int statementsLength = statements.length;
982
						int statementsLength = statements.length;
984
						for (int i = 0; i < statementsLength; i++) {
983
						for (int i = 0; i < statementsLength; i++) {
985
							if (statements[i] instanceof org.eclipse.jdt.internal.compiler.ast.LocalDeclaration) {
984
							if (statements[i] instanceof org.eclipse.jdt.internal.compiler.ast.LocalDeclaration) {
986
								converter.checkAndAddMultipleLocalDeclaration(statements, i, block.statements());
985
								converter.checkAndAddMultipleLocalDeclaration(statements, i, block.statements());
987
							} else {
986
							} else {
988
								block.statements().add(converter.convert(statements[i]));
987
								Statement statement = converter.convert(statements[i]);
988
								if (statement != null) {
989
									block.statements().add(statement);
990
								}
989
							}
991
							}
990
						}
992
						}
991
					}
993
					}
(-)dom/org/eclipse/jdt/core/dom/ASTConverter.java (-14 / +37 lines)
Lines 508-514 Link Here
508
					if (statements[i] instanceof org.eclipse.jdt.internal.compiler.ast.LocalDeclaration) {
508
					if (statements[i] instanceof org.eclipse.jdt.internal.compiler.ast.LocalDeclaration) {
509
						checkAndAddMultipleLocalDeclaration(statements, i, block.statements());
509
						checkAndAddMultipleLocalDeclaration(statements, i, block.statements());
510
					} else {
510
					} else {
511
						block.statements().add(convert(statements[i]));
511
						final Statement statement = convert(statements[i]);
512
						if (statement != null) {
513
							block.statements().add(statement);
514
						}
512
					}
515
					}
513
				}
516
				}
514
			}
517
			}
Lines 1118-1124 Link Here
1118
				if (statements[i] instanceof org.eclipse.jdt.internal.compiler.ast.LocalDeclaration) {
1121
				if (statements[i] instanceof org.eclipse.jdt.internal.compiler.ast.LocalDeclaration) {
1119
					checkAndAddMultipleLocalDeclaration(statements, i, block.statements());
1122
					checkAndAddMultipleLocalDeclaration(statements, i, block.statements());
1120
				} else {
1123
				} else {
1121
					block.statements().add(convert(statements[i]));
1124
					Statement statement2 = convert(statements[i]);
1125
					if (statement2 != null) {
1126
						block.statements().add(statement2);
1127
					}
1122
				}				
1128
				}				
1123
			}
1129
			}
1124
		}
1130
		}
Lines 1344-1350 Link Here
1344
		DoStatement doStatement = new DoStatement(this.ast);
1350
		DoStatement doStatement = new DoStatement(this.ast);
1345
		doStatement.setSourceRange(statement.sourceStart, statement.sourceEnd - statement.sourceStart + 1);
1351
		doStatement.setSourceRange(statement.sourceStart, statement.sourceEnd - statement.sourceStart + 1);
1346
		doStatement.setExpression(convert(statement.condition));
1352
		doStatement.setExpression(convert(statement.condition));
1347
		doStatement.setBody(convert(statement.action));
1353
		final Statement action = convert(statement.action);
1354
		if (action == null) return null;
1355
		doStatement.setBody(action);
1348
		retrieveSemiColonPosition(doStatement);
1356
		retrieveSemiColonPosition(doStatement);
1349
		return doStatement;
1357
		return doStatement;
1350
	}
1358
	}
Lines 1705-1711 Link Here
1705
				EnhancedForStatement enhancedForStatement = new EnhancedForStatement(this.ast);
1713
				EnhancedForStatement enhancedForStatement = new EnhancedForStatement(this.ast);
1706
				enhancedForStatement.setParameter(convertToSingleVariableDeclaration(statement.elementVariable));
1714
				enhancedForStatement.setParameter(convertToSingleVariableDeclaration(statement.elementVariable));
1707
				enhancedForStatement.setExpression(convert(statement.collection));
1715
				enhancedForStatement.setExpression(convert(statement.collection));
1708
				enhancedForStatement.setBody(convert(statement.action));
1716
				final Statement action = convert(statement.action);
1717
				if (action == null) return null;
1718
				enhancedForStatement.setBody(action);
1709
				int start = statement.sourceStart;
1719
				int start = statement.sourceStart;
1710
				int end = statement.sourceEnd;
1720
				int end = statement.sourceEnd;
1711
				enhancedForStatement.setSourceRange(start, end - start + 1);
1721
				enhancedForStatement.setSourceRange(start, end - start + 1);
Lines 1755-1761 Link Here
1755
				forStatement.updaters().add(convertToExpression(increments[i]));				
1765
				forStatement.updaters().add(convertToExpression(increments[i]));				
1756
			}
1766
			}
1757
		}
1767
		}
1758
		forStatement.setBody(convert(statement.action));
1768
		final Statement action = convert(statement.action);
1769
		if (action == null) return null;
1770
		forStatement.setBody(action);
1759
		return forStatement;
1771
		return forStatement;
1760
	}
1772
	}
1761
	
1773
	
Lines 1763-1771 Link Here
1763
		IfStatement ifStatement = new IfStatement(this.ast);
1775
		IfStatement ifStatement = new IfStatement(this.ast);
1764
		ifStatement.setSourceRange(statement.sourceStart, statement.sourceEnd - statement.sourceStart + 1);
1776
		ifStatement.setSourceRange(statement.sourceStart, statement.sourceEnd - statement.sourceStart + 1);
1765
		ifStatement.setExpression(convert(statement.condition));
1777
		ifStatement.setExpression(convert(statement.condition));
1766
		ifStatement.setThenStatement(convert(statement.thenStatement));
1778
		final Statement thenStatement = convert(statement.thenStatement);
1767
		if (statement.elseStatement != null) {
1779
		if (thenStatement == null) return null;
1768
			ifStatement.setElseStatement(convert(statement.elseStatement));
1780
		ifStatement.setThenStatement(thenStatement);
1781
		org.eclipse.jdt.internal.compiler.ast.Statement statement2 = statement.elseStatement;
1782
		if (statement2 != null) {
1783
			final Statement elseStatement = convert(statement2);
1784
			if (elseStatement == null) return null;
1785
			ifStatement.setElseStatement(elseStatement);
1769
		}
1786
		}
1770
		return ifStatement;
1787
		return ifStatement;
1771
	}
1788
	}
Lines 1860-1868 Link Here
1860
	public LabeledStatement convert(org.eclipse.jdt.internal.compiler.ast.LabeledStatement statement) {
1877
	public LabeledStatement convert(org.eclipse.jdt.internal.compiler.ast.LabeledStatement statement) {
1861
		LabeledStatement labeledStatement = new LabeledStatement(this.ast);
1878
		LabeledStatement labeledStatement = new LabeledStatement(this.ast);
1862
		final int sourceStart = statement.sourceStart;
1879
		final int sourceStart = statement.sourceStart;
1863
		labeledStatement.setSourceRange(sourceStart, statement.sourceEnd - sourceStart + 1);	
1880
		labeledStatement.setSourceRange(sourceStart, statement.sourceEnd - sourceStart + 1);
1864
		org.eclipse.jdt.internal.compiler.ast.Statement body = statement.statement;
1881
		Statement body = convert(statement.statement);
1865
		labeledStatement.setBody(convert(body));
1882
		if (body == null) return null;
1883
		labeledStatement.setBody(body);
1866
		final SimpleName name = new SimpleName(this.ast);
1884
		final SimpleName name = new SimpleName(this.ast);
1867
		name.internalSetIdentifier(new String(statement.label));
1885
		name.internalSetIdentifier(new String(statement.label));
1868
		name.setSourceRange(sourceStart, statement.labelEnd - sourceStart + 1);
1886
		name.setSourceRange(sourceStart, statement.labelEnd - sourceStart + 1);
Lines 2488-2494 Link Here
2488
				if (statements[i] instanceof org.eclipse.jdt.internal.compiler.ast.LocalDeclaration) {
2506
				if (statements[i] instanceof org.eclipse.jdt.internal.compiler.ast.LocalDeclaration) {
2489
					checkAndAddMultipleLocalDeclaration(statements, i, switchStatement.statements());
2507
					checkAndAddMultipleLocalDeclaration(statements, i, switchStatement.statements());
2490
				} else {
2508
				} else {
2491
					switchStatement.statements().add(convert(statements[i]));
2509
					final Statement currentStatement = convert(statements[i]);
2510
					if (currentStatement != null) {
2511
						switchStatement.statements().add(currentStatement);
2512
					}
2492
				}
2513
				}
2493
			}
2514
			}
2494
		}
2515
		}
Lines 2725-2732 Link Here
2725
		final WhileStatement whileStatement = new WhileStatement(this.ast);
2746
		final WhileStatement whileStatement = new WhileStatement(this.ast);
2726
		whileStatement.setSourceRange(statement.sourceStart, statement.sourceEnd - statement.sourceStart + 1);
2747
		whileStatement.setSourceRange(statement.sourceStart, statement.sourceEnd - statement.sourceStart + 1);
2727
		whileStatement.setExpression(convert(statement.condition));
2748
		whileStatement.setExpression(convert(statement.condition));
2728
		org.eclipse.jdt.internal.compiler.ast.Statement action = statement.action;
2749
		final Statement action = convert(statement.action);
2729
		whileStatement.setBody(convert(action));
2750
		if (action == null) return null;
2751
		whileStatement.setBody(action);
2730
		return whileStatement;
2752
		return whileStatement;
2731
	}
2753
	}
2732
	
2754
	
Lines 3314-3319 Link Here
3314
	}
3336
	}
3315
	
3337
	
3316
	protected Statement createFakeEmptyStatement(org.eclipse.jdt.internal.compiler.ast.Statement statement) {
3338
	protected Statement createFakeEmptyStatement(org.eclipse.jdt.internal.compiler.ast.Statement statement) {
3339
		if (statement == null) return null;
3317
		EmptyStatement emptyStatement = new EmptyStatement(this.ast);
3340
		EmptyStatement emptyStatement = new EmptyStatement(this.ast);
3318
		emptyStatement.setFlags(emptyStatement.getFlags() | ASTNode.MALFORMED);
3341
		emptyStatement.setFlags(emptyStatement.getFlags() | ASTNode.MALFORMED);
3319
		int start = statement.sourceStart;
3342
		int start = statement.sourceStart;

Return to bug 142793