Expressions: Fixed issue #3432; aggregate functions sometimes ignore some of their arguments.

Also updated regression tests in Spreadsheet module.
This commit is contained in:
Eivind Kvedalen
2018-04-20 19:49:13 +02:00
committed by wmayer
parent b440dc830b
commit ae7bef9978
2 changed files with 11 additions and 4 deletions

View File

@@ -897,16 +897,13 @@ Expression * FunctionExpression::evalAggregate() const
throw Exception("Invalid property type for aggregate");
} while (range.next());
}
else if (args[i]->isDerivedFrom(App::VariableExpression::getClassTypeId())) {
else {
std::unique_ptr<Expression> e(args[i]->eval());
NumberExpression * n(freecad_dynamic_cast<NumberExpression>(e.get()));
if (n)
c->collect(n->getQuantity());
}
else if (args[i]->isDerivedFrom(App::NumberExpression::getClassTypeId())) {
c->collect(static_cast<NumberExpression*>(args[i])->getQuantity());
}
}
return new NumberExpression(owner, c->getQuantity());