1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-05 16:56:04 +02:00

Fixed EvalConstructor.isConstantExpression method

Change-Id: I17e3d9bb53cd8667832c9414108247ccde75e0b7
This commit is contained in:
Sergey Prigogin 2016-10-08 18:33:06 -07:00 committed by Gerrit Code Review @ Eclipse.org
parent 4c4fb739b1
commit 87ada6a98b

View file

@ -54,6 +54,8 @@ public final class EvalConstructor extends CPPDependentEvaluation {
private final ICPPEvaluation[] fArguments;
private boolean fCheckedIsTypeDependent;
private boolean fIsTypeDependent;
private boolean fCheckedIsConstantExpression;
private boolean fIsConstantExpression;
private static final IASTName TEMP_NAME = ASTNodeFactoryFactory.getDefaultCPPNodeFactory().newName();
public EvalConstructor(IType type, ICPPConstructor constructor, ICPPEvaluation[] arguments, IBinding templateDefinition) {
@ -99,7 +101,15 @@ public final class EvalConstructor extends CPPDependentEvaluation {
@Override
public boolean isConstantExpression(IASTNode point) {
return true;
if (!fCheckedIsConstantExpression) {
fCheckedIsConstantExpression = true;
fIsConstantExpression = computeIsConstantExpression(point);
}
return fIsConstantExpression;
}
private boolean computeIsConstantExpression(IASTNode point) {
return fConstructor.isConstexpr() && areAllConstantExpressions(fArguments, point);
}
@Override