Skip to content

Commit d14718a

Browse files
committed
Soft deprecation of (tree::Node)(X) syntax
1 parent fe6b3e0 commit d14718a

File tree

1 file changed

+19
-22
lines changed

1 file changed

+19
-22
lines changed

src/OperatorEnumConstruction.jl

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,26 @@ import ..OperatorEnumModule: AbstractOperatorEnum, OperatorEnum, GenericOperator
55
import ..EquationModule: string_tree, Node
66
import ..EvaluateEquationModule: eval_tree_array
77
import ..EvaluateEquationDerivativeModule: eval_grad_tree_array
8+
import ..EvaluationHelpersModule: _grad_evaluator
89

910
function create_evaluation_helpers!(operators::OperatorEnum)
1011
@eval begin
1112
Base.print(io::IO, tree::Node) = print(io, string_tree(tree, $operators))
1213
Base.show(io::IO, tree::Node) = print(io, string_tree(tree, $operators))
1314
function (tree::Node)(X; kws...)
14-
out, did_finish = eval_tree_array(tree, X, $operators; kws...)
15-
if !did_finish
16-
out .= convert(eltype(out), NaN)
17-
end
18-
return out
15+
Base.depwarn(
16+
"The `tree(X; kws...)` syntax is deprecated. Use `tree(X, operators; kws...)` instead.",
17+
:Node,
18+
)
19+
return tree(X, $operators; kws...)
1920
end
2021
# Gradients:
21-
function Base.adjoint(tree::Node{T}) where {T}
22-
return (X; kws...) -> begin
23-
_, grad, did_complete = eval_grad_tree_array(
24-
tree, X, $operators; variable=true, kws...
25-
)
26-
!did_complete && (grad .= T(NaN))
27-
grad
28-
end
22+
function _grad_evaluator(tree::Node, X; kws...)
23+
Base.depwarn(
24+
"The `tree'(X; kws...)` syntax is deprecated. Use `tree'(X, operators; kws...)` instead.",
25+
:Node,
26+
)
27+
return _grad_evaluator(tree, X, $operators; kws...)
2928
end
3029
end
3130
end
@@ -36,16 +35,14 @@ function create_evaluation_helpers!(operators::GenericOperatorEnum)
3635
Base.show(io::IO, tree::Node) = print(io, string_tree(tree, $operators))
3736

3837
function (tree::Node)(X; kws...)
39-
out, did_finish = eval_tree_array(tree, X, $operators; kws...)
40-
if !did_finish
41-
return nothing
42-
end
43-
return out
38+
Base.depwarn(
39+
"The `tree(X; kws...)` syntax is deprecated. Use `tree(X, operators; kws...)` instead.",
40+
:Node,
41+
)
42+
return tree(X, $operators; kws...)
4443
end
45-
function Base.adjoint(::Node{T}) where {T}
46-
return _ -> begin
47-
error("Gradients are not implemented for `GenericOperatorEnum`.")
48-
end
44+
function _grad_evaluator(tree::Node, X; kws...)
45+
@error "Gradients are not implemented for `GenericOperatorEnum`."
4946
end
5047
end
5148
end

0 commit comments

Comments
 (0)