From d8dd7c153b0f097543f2a78209b2d6feee6e1ae3 Mon Sep 17 00:00:00 2001 From: marius Date: Sat, 9 Sep 2023 01:27:23 -0500 Subject: [PATCH] fix dot broadcasts in `@fwdmodel` --- src/simpleppl.jl | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/simpleppl.jl b/src/simpleppl.jl index 126866b6..42495f8f 100644 --- a/src/simpleppl.jl +++ b/src/simpleppl.jl @@ -32,12 +32,14 @@ macro fwdmodel(def) return :(_vars[$(QuoteNode(var))] = (Base.@isdefined($var) && !ismissing($var) ? $var : ($var = $rhs))) elseif !isexpr(x, :block) && @capture(x, (f_(args__; kwargs__) | f_(args__))) kwargs = kwargs == nothing ? () : kwargs - if (f isa Symbol) && !(f in maybe_local_var) && isdefined(__module__, f) - if is_simpleppl_model(getfield(__module__, f)) - return :($f($(Simulate()), _vars, rng, $(args...); $(kwargs...))) + if (f isa Symbol) && !startswith(string(f),".") + if !(f in maybe_local_var) && isdefined(__module__, f) + if is_simpleppl_model(getfield(__module__, f)) + return :($f($(Simulate()), _vars, rng, $(args...); $(kwargs...))) + end + else + return :($is_simpleppl_model($f) ? $f($(Simulate()), _vars, rng, $(args...); $(kwargs...)) : $x) end - else - return :($is_simpleppl_model($f) ? $f($(Simulate()), _vars, rng, $(args...); $(kwargs...)) : $x) end end return x @@ -58,12 +60,14 @@ macro fwdmodel(def) return :($var = $rhs) elseif !isexpr(x, :block) && @capture(x, (f_(args__; kwargs__) | f_(args__))) kwargs = kwargs == nothing ? () : kwargs - if (f isa Symbol) && !(f in maybe_local_var) && isdefined(__module__, f) - if is_simpleppl_model(getfield(__module__, f)) - return :($f($(Logpdf()), _logpdf, $(args...); $(kwargs...))) + if (f isa Symbol) && !startswith(string(f),".") + if !(f in maybe_local_var) && isdefined(__module__, f) + if is_simpleppl_model(getfield(__module__, f)) + return :($f($(Logpdf()), _logpdf, $(args...); $(kwargs...))) + end + else + return :($is_simpleppl_model($f) ? $f($(Logpdf()), _logpdf, $(args...); $(kwargs...)) : $x) end - else - return :($is_simpleppl_model($f) ? $f($(Logpdf()), _logpdf, $(args...); $(kwargs...)) : $x) end end return x