[poincare] recursivelyMatches takes replaceSymbols parameter

This fixes:
[7]->a
1+2->a
The second operation would get interrupted because 'a' is a matrix if
symbols are replaced
This commit is contained in:
Léa Saviot
2018-11-13 16:07:46 +01:00
committed by Émilie Feral
parent e86300a28d
commit 8a272458de
6 changed files with 28 additions and 26 deletions

View File

@@ -28,7 +28,7 @@ void Equation::tidy() {
Expression Equation::standardForm(Context * context) const {
if (m_standardForm.isUninitialized()) {
const Expression e = expression(context);
if (e.recursivelyMatches([](const Expression e, Context & context) { return e.type() == ExpressionNode::Type::Undefined || e.type() == ExpressionNode::Type::Infinity || Expression::IsMatrix(e, context); }, *context)) {
if (e.recursivelyMatches([](const Expression e, Context & context, bool replaceSymbols) { return e.type() == ExpressionNode::Type::Undefined || e.type() == ExpressionNode::Type::Infinity || Expression::IsMatrix(e, context, replaceSymbols); }, *context, true)) {
m_standardForm = Undefined();
return m_standardForm;
}