Simplification of symbolics seems to not update operator
Daniel added an xfail to the test in tests/functional/script/toolchain/generator/unbuilder/test_references.py
in bfa9a949 because it was failing as follows:
self = <finesse.script.generator.KatUnbuilder object at 0x7f11d1ece6d0>, operation = <Symbolic='(1-myel1.b)' @ 0x7f11d1ed1d60>
path = 'kat.0', ref_node = None, ref_extras = None
@_do_fill.register(Function)
def _(self, operation, path, ref_node, ref_extras):
op = operation.name
extra_tokens = []
def make_arg(argument, order):
argument_path = self.graph.item_node_name(order, path)
# FIXME: add ref_node (should be the argument order child of ref_node, but
# this is not guaranteed to exist so needs special handling)
self._fill(argument, argument_path)
self.graph.add_edge(
argument_path, path, type=KatEdgeType.ARGUMENT, order=order
)
if ref_node is not None:
LOGGER.warning(
"regeneration of original KatScript for operations not implemented yet"
)
if op in self.spec.binary_operators:
assert len(operation.args) == 2
extra_tokens.append(self._use_token(self._literal_token("(")))
make_arg(operation.args[0], 0)
token = self._use_token(self._literal_token(operation.name))
nodetype = KatNodeType.EXPRESSION
make_arg(operation.args[1], 1)
extra_tokens.append(self._use_token(self._literal_token(")")))
elif unary_op := self.UNARY_OPERATORS.get(op):
token = self._use_token(self._literal_token(unary_op))
nodetype = KatNodeType.FUNCTION
make_arg(operation.args[0], 0)
elif op in self.spec.expression_functions:
token = self._use_token(self._name_token(operation.name))
nodetype = KatNodeType.FUNCTION
extra_tokens.append(self._use_token(self._literal_token("(")))
for order, argument in enumerate(operation.args):
if order > 0:
extra_tokens.append(self._use_token(self._literal_token(",")))
extra_tokens.append(self._use_token(self._space_token()))
make_arg(argument, order)
extra_tokens.append(self._use_token(self._literal_token(")")))
else:
> raise NotImplementedError(
f"don't know how to generate KatScript for {repr(op)}"
)
E NotImplementedError: don't know how to generate KatScript for '+'
src/finesse/script/generator.py:797: NotImplementedError
The test sets up a special compiler that only knows about the -
operator, because that's what's being tested. For some reason the expression's name
attribute, which contains the operator, is set to +
, which breaks the test. I think there's a bug somewhere in the symbolics code because it doesn't look like there's a +
involved anywhere in the expression.