Skip to content

Commit ea7c03d

Browse files
committed
Generalize deprecated constructors
1 parent 4e01d47 commit ea7c03d

File tree

1 file changed

+65
-36
lines changed

1 file changed

+65
-36
lines changed

src/deprecated.jl

Lines changed: 65 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,71 @@
11
import Base: @deprecate
2-
import .EquationModule: Node
2+
import .EquationModule: Node, GraphNode
33

44
@deprecate set_constants set_constants!
55
@deprecate simplify_tree simplify_tree!
66

7-
function Node(d::Integer, c::Bool, v::T) where {T}
8-
Base.depwarn("Node(d, c, v) is deprecated. Use Node{T}(val=v) instead.", :Node)
9-
@assert d == 1
10-
@assert c == true
11-
return Node{T}(; val=v)
12-
end
13-
function Node(::Type{T}, d::Integer, c::Bool, v::_T) where {T,_T}
14-
Base.depwarn("Node(T, d, c, v) is deprecated. Use Node{T}(val=v) instead.", :Node)
15-
@assert d == 1
16-
@assert c == true
17-
return Node{T}(; val=v)
18-
end
19-
function Node(::Type{T}, d::Integer, c::Bool, ::Nothing, f::Integer) where {T}
20-
Base.depwarn(
21-
"Node(T, d, c, v, f) is deprecated. Use Node{T}(feature=f) instead.", :Node
22-
)
23-
@assert d == 1
24-
@assert c == false
25-
return Node{T}(; feature=f)
26-
end
27-
function Node(d::Integer, ::Bool, ::Nothing, ::Integer, o::Integer, l::Node)
28-
Base.depwarn(
29-
"Node(d, c, v, f, o, l) is deprecated. Use Node(operator=o, left=l) instead.", :Node
30-
)
31-
@assert d == 1
32-
return Node(; op=o, l=l)
33-
end
34-
function Node(
35-
d::Integer, ::Bool, ::Nothing, ::Integer, o::Integer, l::Node{T}, r::Node{T}
36-
) where {T}
37-
Base.depwarn(
38-
"Node(d, c, v, f, o, l, r) is deprecated. Use Node(op=o, l=l, r=r) instead.", :Node
39-
)
40-
@assert d == 2
41-
return Node(; op=o, l=l, r=r)
7+
for N in (:Node, :GraphNode)
8+
@eval begin
9+
function $N(d::Integer, c::Bool, v::T) where {T}
10+
Base.depwarn(
11+
string($N) *
12+
"(d, c, v) is deprecated. Use " *
13+
string($(N)) *
14+
"{T}(val=v) instead.",
15+
$(Meta.quot(N)),
16+
)
17+
@assert d == 1
18+
@assert c == true
19+
return $N{T}(; val=v)
20+
end
21+
function $N(::Type{T}, d::Integer, c::Bool, v::_T) where {T,_T}
22+
Base.depwarn(
23+
string($N) *
24+
"(T, d, c, v) is deprecated. Use " *
25+
string($(N)) *
26+
"{T}(val=v) instead.",
27+
$(Meta.quot(N)),
28+
)
29+
@assert d == 1
30+
@assert c == true
31+
return $N{T}(; val=v)
32+
end
33+
function $N(::Type{T}, d::Integer, c::Bool, ::Nothing, f::Integer) where {T}
34+
Base.depwarn(
35+
string($N) *
36+
"(T, d, c, v, f) is deprecated. Use " *
37+
string($(N)) *
38+
"{T}(feature=f) instead.",
39+
$(Meta.quot(N)),
40+
)
41+
42+
@assert d == 1
43+
@assert c == false
44+
return $N{T}(; feature=f)
45+
end
46+
function $N(d::Integer, ::Bool, ::Nothing, ::Integer, o::Integer, l::$N)
47+
Base.depwarn(
48+
string($N) *
49+
"(d, c, v, f, o, l) is deprecated. Use " *
50+
string($(N)) *
51+
"(op=o, l=l) instead.",
52+
$(Meta.quot(N)),
53+
)
54+
@assert d == 1
55+
return $N(; op=o, l=l)
56+
end
57+
function $N(
58+
d::Integer, ::Bool, ::Nothing, ::Integer, o::Integer, l::$N{T}, r::$N{T}
59+
) where {T}
60+
Base.depwarn(
61+
string($N) *
62+
"(d, c, v, f, o, l, r) is deprecated. Use " *
63+
string($(N)) *
64+
"(op=o, l=l, r=r) instead.",
65+
$(Meta.quot(N)),
66+
)
67+
@assert d == 2
68+
return $N(; op=o, l=l, r=r)
69+
end
70+
end
4271
end

0 commit comments

Comments
 (0)