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

Collapse All | Expand All

(-)dom/org/eclipse/jdt/core/dom/ASTConverter.java (-30 / +19 lines)
Lines 879-894 Link Here
879
879
880
	public AssertStatement convert(org.eclipse.jdt.internal.compiler.ast.AssertStatement statement) {
880
	public AssertStatement convert(org.eclipse.jdt.internal.compiler.ast.AssertStatement statement) {
881
		AssertStatement assertStatement = new AssertStatement(this.ast);
881
		AssertStatement assertStatement = new AssertStatement(this.ast);
882
		int end = statement.assertExpression.sourceEnd + 1;
882
		final Expression assertExpression = convert(statement.assertExpression);
883
		assertStatement.setExpression(convert(statement.assertExpression));
883
		Expression searchingNode = assertExpression;
884
		assertStatement.setExpression(assertExpression);
884
		org.eclipse.jdt.internal.compiler.ast.Expression exceptionArgument = statement.exceptionArgument;
885
		org.eclipse.jdt.internal.compiler.ast.Expression exceptionArgument = statement.exceptionArgument;
885
		if (exceptionArgument != null) {
886
		if (exceptionArgument != null) {
886
			end = exceptionArgument.sourceEnd + 1;
887
			final Expression exceptionMessage = convert(exceptionArgument);
887
			assertStatement.setMessage(convert(exceptionArgument));
888
			assertStatement.setMessage(exceptionMessage);
889
			searchingNode = exceptionMessage;
888
		}
890
		}
889
		int start = statement.sourceStart;
891
		int start = statement.sourceStart;
890
		int sourceEnd = retrieveEndingSemiColonPosition(end, this.compilationUnitSourceLength);
892
		int sourceEnd = retrieveSemiColonPosition(searchingNode);
891
		assertStatement.setSourceRange(start, sourceEnd - start + 1);
893
		if (sourceEnd == -1) {
894
			sourceEnd = searchingNode.getStartPosition() + searchingNode.getLength() - 1;
895
			assertStatement.setSourceRange(start, sourceEnd - start + 1);
896
		} else {
897
			assertStatement.setSourceRange(start, sourceEnd - start + 1);
898
		}
892
		return assertStatement;
899
		return assertStatement;
893
	}
900
	}
894
	
901
	
Lines 3925-3959 Link Here
3925
		return -1;
3932
		return -1;
3926
	}
3933
	}
3927
3934
3928
	protected int retrieveEndingSemiColonPosition(int start, int end) {
3935
	protected int retrieveSemiColonPosition(Expression node) {
3929
		int count = 0;
3936
		int start = node.getStartPosition();
3930
		this.scanner.resetTo(start, end);
3937
		int length = node.getLength();
3938
		int end = start + length;
3939
		this.scanner.resetTo(end, this.compilationUnitSourceLength);
3931
		try {
3940
		try {
3932
			int token;
3941
			int token;
3933
			while ((token = this.scanner.getNextToken()) != TerminalTokens.TokenNameEOF) {
3942
			while ((token = this.scanner.getNextToken()) != TerminalTokens.TokenNameEOF) {
3934
				switch(token) {
3943
				switch(token) {
3935
					case TerminalTokens.TokenNameSEMICOLON:
3944
					case TerminalTokens.TokenNameSEMICOLON:
3936
						if (count == 0) {
3945
						return this.scanner.currentPosition - 1;
3937
							return this.scanner.currentPosition - 1;
3938
						}
3939
						break;
3940
					case TerminalTokens.TokenNameLBRACE :
3941
						count++;
3942
						break;
3943
					case TerminalTokens.TokenNameRBRACE :
3944
						count--;
3945
						break;
3946
					case TerminalTokens.TokenNameLPAREN :
3947
						count++;
3948
						break;
3949
					case TerminalTokens.TokenNameRPAREN :
3950
						count--;
3951
						break;
3952
					case TerminalTokens.TokenNameLBRACKET :
3953
						count++;
3954
						break;
3955
					case TerminalTokens.TokenNameRBRACKET :
3956
						count--;
3957
				}
3946
				}
3958
			}
3947
			}
3959
		} catch(InvalidInputException e) {
3948
		} catch(InvalidInputException e) {

Return to bug 143212