[poincare] Fix Expression::shallowReplaceReplaceableSymbols

This commit is contained in:
Léa Saviot
2018-11-23 14:45:44 +01:00
parent f81e221f50
commit 3273de4dac
3 changed files with 10 additions and 1 deletions

View File

@@ -247,6 +247,7 @@ protected:
int getPolynomialCoefficients(Context & context, const char * symbolName, Expression coefficients[]) const { return node()->getPolynomialCoefficients(context, symbolName, coefficients); }
bool hasReplaceableSymbols(Context & context) const;
Expression shallowReplaceReplaceableSymbols(Context & context) { return node()->shallowReplaceReplaceableSymbols(context); }
Expression defaultReplaceReplaceableSymbols(Context & context);
/* Simplification */
Expression denominator(Context & context, Preferences::AngleUnit angleUnit) const { return node()->denominator(context, angleUnit); }

View File

@@ -238,6 +238,14 @@ bool Expression::hasReplaceableSymbols(Context & context) const {
}, context, false);
}
Expression Expression::defaultReplaceReplaceableSymbols(Context & context) {
int nbChildren = numberOfChildren();
for (int i = 0; i < nbChildren; i++) {
childAtIndex(i).shallowReplaceReplaceableSymbols(context);
}
return *this;
}
template<typename U>
Evaluation<U> Expression::approximateToEvaluation(Context& context, Preferences::AngleUnit angleUnit) const {
return node()->approximate(U(), context, angleUnit);

View File

@@ -28,7 +28,7 @@ int ExpressionNode::getPolynomialCoefficients(Context & context, const char * sy
}
Expression ExpressionNode::shallowReplaceReplaceableSymbols(Context & context) {
return Expression(this);
return Expression(this).defaultReplaceReplaceableSymbols(context);
}
int ExpressionNode::getVariables(Context & context, isVariableTest isVariable, char * variables, int maxSizeVariable) const {