Skip to content

Commit f73d8b1

Browse files
fix: fix simplify_shifts not retaining variable metadata
1 parent 63e9383 commit f73d8b1

File tree

1 file changed

+7
-9
lines changed

1 file changed

+7
-9
lines changed

src/structural_transformation/utils.jl

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -433,20 +433,18 @@ end
433433

434434
function simplify_shifts(var)
435435
ModelingToolkit.hasshift(var) || return var
436-
r = @rule ~x::isdoubleshift => begin
437-
op1 = operation(~x)
438-
vv1 = arguments(~x)[1]
436+
if isdoubleshift(var)
437+
op1 = operation(var)
438+
vv1 = arguments(var)[1]
439439
op2 = operation(vv1)
440440
vv2 = arguments(vv1)[1]
441441
s1 = op1.steps
442442
s2 = op2.steps
443443
t1 = op1.t
444444
t2 = op2.t
445-
if t1 === nothing
446-
ModelingToolkit.Shift(t2, s1 + s2)(vv2)
447-
else
448-
ModelingToolkit.Shift(t1, s1 + s2)(vv2)
449-
end
445+
return simplify_shifts(ModelingToolkit.Shift(t1 === nothing ? t2 : t1, s1 + s2)(vv2))
446+
else
447+
return similarterm(var, operation(var), simplify_shifts.(arguments(var)),
448+
Symbolics.symtype(var); metadata = unwrap(var).metadata)
450449
end
451-
return Postwalk(PassThrough(r))(var)
452450
end

0 commit comments

Comments
 (0)