Genex: Add more extensive support for an unbounded number of parameters

Previously genex support for unbounded number of parameters required
at least 1 parameter. We now support zero or more parameters, and two
or more parameters.
This commit is contained in:
Robert Maynard
2019-05-29 14:49:36 -04:00
committed by Brad King
parent 5e2d22c177
commit 2d4787fc4d
2 changed files with 10 additions and 4 deletions
+7 -3
View File
@@ -166,9 +166,13 @@ std::string GeneratorExpressionContent::EvaluateParameters(
reportError(context, this->GetOriginalExpression(), reportError(context, this->GetOriginalExpression(),
"$<" + identifier + "$<" + identifier +
"> expression requires at least one parameter."); "> expression requires at least one parameter.");
} } else if (numExpected == cmGeneratorExpressionNode::TwoOrMoreParameters &&
if (numExpected == cmGeneratorExpressionNode::OneOrZeroParameters && parameters.size() < 2) {
parameters.size() > 1) { reportError(context, this->GetOriginalExpression(),
"$<" + identifier +
"> expression requires at least two parameters.");
} else if (numExpected == cmGeneratorExpressionNode::OneOrZeroParameters &&
parameters.size() > 1) {
reportError(context, this->GetOriginalExpression(), reportError(context, this->GetOriginalExpression(),
"$<" + identifier + "$<" + identifier +
"> expression requires one or zero parameters."); "> expression requires one or zero parameters.");
+3 -1
View File
@@ -20,7 +20,9 @@ struct cmGeneratorExpressionNode
{ {
DynamicParameters = 0, DynamicParameters = 0,
OneOrMoreParameters = -1, OneOrMoreParameters = -1,
OneOrZeroParameters = -2 TwoOrMoreParameters = -2,
ZeroOrMoreParameters = -3,
OneOrZeroParameters = -4
}; };
virtual ~cmGeneratorExpressionNode() = default; virtual ~cmGeneratorExpressionNode() = default;