From 3273de4dace2e25f582a0307b2a4afe435ad7a1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Fri, 23 Nov 2018 14:45:44 +0100 Subject: [PATCH] [poincare] Fix Expression::shallowReplaceReplaceableSymbols --- poincare/include/poincare/expression.h | 1 + poincare/src/expression.cpp | 8 ++++++++ poincare/src/expression_node.cpp | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/poincare/include/poincare/expression.h b/poincare/include/poincare/expression.h index db8454bfd..57cdc0081 100644 --- a/poincare/include/poincare/expression.h +++ b/poincare/include/poincare/expression.h @@ -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); } diff --git a/poincare/src/expression.cpp b/poincare/src/expression.cpp index 76ebd4a95..bc778b8c9 100644 --- a/poincare/src/expression.cpp +++ b/poincare/src/expression.cpp @@ -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 Evaluation Expression::approximateToEvaluation(Context& context, Preferences::AngleUnit angleUnit) const { return node()->approximate(U(), context, angleUnit); diff --git a/poincare/src/expression_node.cpp b/poincare/src/expression_node.cpp index e2fd711df..97719c681 100644 --- a/poincare/src/expression_node.cpp +++ b/poincare/src/expression_node.cpp @@ -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 {