Replace Poincare::Function unknown earlier (in Context)

This commit is contained in:
Ruben Dashyan
2019-09-16 16:34:40 +02:00
committed by Léa Saviot
parent dd80be026d
commit 3183ca7d7e
4 changed files with 11 additions and 30 deletions

View File

@@ -52,6 +52,9 @@ void GlobalContext::setExpressionForSymbolAbstract(const Expression & expression
SetExpressionForActualSymbol(finalExpression, symbol, record);
} else {
assert(symbol.type() == ExpressionNode::Type::Function);
Expression child = symbol.childAtIndex(0);
assert(child.type() == ExpressionNode::Type::Symbol);
finalExpression = finalExpression.replaceSymbolWithExpression(static_cast<Symbol&>(child), Symbol::Builder(UCodePointUnknownX));
SetExpressionForFunction(finalExpression, symbol, record);
}
}
@@ -79,7 +82,11 @@ const Expression GlobalContext::ExpressionForFunction(const SymbolAbstract & sym
}
/* An function record value has metadata before the expression. To get the
* expression, use the function record handle. */
return ContinuousFunction(r).expressionClone();
Expression e = ContinuousFunction(r).expressionClone();
if (!e.isUninitialized()) {
e = e.replaceSymbolWithExpression(Symbol::Builder(UCodePointUnknownX), symbol.childAtIndex(0));
}
return e;
}
Ion::Storage::Record::ErrorStatus GlobalContext::SetExpressionForActualSymbol(const Expression & expression, const SymbolAbstract & symbol, Ion::Storage::Record previousRecord) {