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:
parent
86224bcfa0
commit
c1614cb877
1 changed files with 34 additions and 12 deletions
|
@ -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();
|
||||||
|
|
Loading…
Add table
Reference in a new issue