Skip to content

Commit 95f7798

Browse files
committed
factor() update to use genvar
1 parent d33d044 commit 95f7798

File tree

2 files changed

+18
-9
lines changed

2 files changed

+18
-9
lines changed

src/transform/factor.jl

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,12 @@ factor!(ex::NTuple; assignments::Vector{Assignment}) = factor!(Expr(:($([i for i
2828
factor!(ex::Tuple; assignments::Vector{Assignment}) = factor!(Expr(:($([i for i in ex]...))), assignments=assignments)
2929

3030
function factor!(ex::Number; assignments = Assignment[])
31-
new = Assignment(gensym(:aux), ex)
32-
index = findall(x -> x.rhs==new.rhs, assignments)
31+
index = findall(x -> x.rhs==ex, assignments)
3332
if isempty(index)
33+
newsym = gensym(:aux)
34+
newsym = Symbol(string(newsym)[3:5] * string(newsym)[7:end])
35+
newvar = genvar(newsym)
36+
new = Assignment(newvar, ex)
3437
push!(assignments, new)
3538
else
3639
p = collect(1:length(assignments))
@@ -41,9 +44,12 @@ function factor!(ex::Number; assignments = Assignment[])
4144
return assignments
4245
end
4346
function factor!(ex::Symbol; assignments = Assignment[])
44-
new = Assignment(gensym(:aux), ex)
45-
index = findall(x -> x.rhs==new.rhs, assignments)
47+
index = findall(x -> x.rhs==ex, assignments)
4648
if isempty(index)
49+
newsym = gensym(:aux)
50+
newsym = Symbol(string(newsym)[3:5] * string(newsym)[7:end])
51+
newvar = genvar(newsym)
52+
new = Assignment(newvar, ex)
4753
push!(assignments, new)
4854
else
4955
p = collect(1:length(assignments))
@@ -57,9 +63,12 @@ end
5763
function factor!(ex::Expr; assignments = Assignment[])
5864
binarize!(ex)
5965
if is_factor(ex)
60-
new = Assignment(gensym(:aux), ex)
61-
index = findall(x -> x.rhs==new.rhs, assignments)
66+
index = findall(x -> x.rhs==ex, assignments)
6267
if isempty(index)
68+
newsym = gensym(:aux)
69+
newsym = Symbol(string(newsym)[3:5] * string(newsym)[7:end])
70+
newvar = genvar(newsym)
71+
new = Assignment(newvar, ex)
6372
push!(assignments, new)
6473
else
6574
p = collect(1:length(assignments))

src/transform/utilities.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ function genvar(a::Symbol, b=:t)
2626
push!(ex.args, expr)
2727
rhs = Symbolics.build_expr(:vect, vars)
2828
push!(ex.args, rhs)
29-
eval(ex)
29+
eval(ex)[1]
3030
end
3131
function genvar(a::Symbol, b::Vector{Symbol})
3232
vars = Symbol[]
@@ -36,7 +36,7 @@ function genvar(a::Symbol, b::Vector{Symbol})
3636
push!(ex.args, expr)
3737
rhs = Symbolics.build_expr(:vect, vars)
3838
push!(ex.args, rhs)
39-
eval(ex)
39+
eval(ex)[1]
4040
end
4141
function genparam(a::Symbol)
4242
params = Symbol[]
@@ -46,5 +46,5 @@ function genparam(a::Symbol)
4646
push!(ex.args, expr)
4747
rhs = Symbolics.build_expr(:vect, params)
4848
push!(ex.args, rhs)
49-
eval(ex)
49+
eval(ex)[1]
5050
end

0 commit comments

Comments
 (0)