Skip to content

Absolute access is probably not copied correctly after _eval_subs()

I think there is a bug in Field.Access::_eval_subs(self, old, new) as the is_absolute_access property is not copied.

It should be

        def _eval_subs(self, old, new):
            return Field.Access(self.field,
                                tuple(sp.sympify(a).subs(old, new) for a in self.offsets),
                                tuple(sp.sympify(a).subs(old, new) for a in self.index),
                                is_absolute_access=self.is_absolute_access,                    # << this is missing, maybe there is more ...
                                dtype=self.dtype)

instead of

        def _eval_subs(self, old, new):
            return Field.Access(self.field,
                                tuple(sp.sympify(a).subs(old, new) for a in self.offsets),
                                tuple(sp.sympify(a).subs(old, new) for a in self.index),
                                dtype=self.dtype)

Otherwise when performing sympy substitutions, that property might get lost and subsequent resolve_field_access() endeavors may produce garbage.