1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Bug 302412: Use new API for creating function call expressions.

This commit is contained in:
Markus Schorn 2010-03-09 09:55:30 +00:00
parent 86224bcfa0
commit c1614cb877

View file

@ -663,18 +663,40 @@ public class GNUCSourceParser extends AbstractGNUSourceCodeParser {
break; break;
case IToken.tLPAREN: case IToken.tLPAREN:
// function call // function call
consume(); int endOffset;
if (LT(1) != IToken.tRPAREN) List<IASTExpression> argList= null;
secondExpression = expression(); consume(IToken.tLPAREN);
if (LT(1) == IToken.tRPAREN) boolean isFirst= true;
last = consume().getEndOffset(); while(true) {
else final int lt1= LT(1);
// must be EOC if (lt1 == IToken.tRPAREN) {
last = Integer.MAX_VALUE; endOffset= consume().getEndOffset();
IASTFunctionCallExpression f = nodeFactory.newFunctionCallExpression(firstExpression, secondExpression); break;
((ASTNode) f).setOffsetAndLength(((ASTNode) firstExpression) } else if (lt1 == IToken.tEOC) {
.getOffset(), last - ((ASTNode) firstExpression).getOffset()); endOffset= LA(1).getEndOffset();
firstExpression = f; break;
}
if (isFirst) {
isFirst= false;
} else {
consume(IToken.tCOMMA);
}
IASTExpression expr= expression(ExprKind.eAssignment);
if (argList == null) {
argList= new ArrayList<IASTExpression>();
}
argList.add(expr);
}
final IASTExpression[] args;
if (argList == null) {
args= IASTExpression.EMPTY_EXPRESSION_ARRAY;
} else {
args= argList.toArray(new IASTExpression[argList.size()]);
}
IASTFunctionCallExpression f = nodeFactory.newFunctionCallExpression(firstExpression, args);
firstExpression = setRange(f, firstExpression, endOffset);
break; break;
case IToken.tINCR: case IToken.tINCR:
int offset = consume().getEndOffset(); int offset = consume().getEndOffset();