@@ -39,18 +39,18 @@ Otherwise, the value of `x[1]` is returned.
39
39
macro preprocess (data_vars, missing_vars, ex)
40
40
ex
41
41
end
42
- macro preprocess (data_vars, missing_vars , ex:: Union{Symbol, Expr} )
42
+ macro preprocess (model , ex:: Union{Symbol, Expr} )
43
43
sym = gensym (:sym )
44
44
lhs = gensym (:lhs )
45
45
return esc (quote
46
46
# Extract symbol
47
47
$ sym = Val ($ (vsym (ex)))
48
48
# This branch should compile nicely in all cases except for partial missing data
49
49
# For example, when `ex` is `x[i]` and `x isa Vector{Union{Missing, Float64}}`
50
- if ! DynamicPPL. inparams ($ sym, $ data_vars ) || DynamicPPL. inparams ($ sym, $ missing_vars )
50
+ if ! DynamicPPL. inargnames ($ sym, $ model ) || DynamicPPL. inmissings ($ sym, $ model )
51
51
$ (varname (ex)), $ (vinds (ex))
52
52
else
53
- if DynamicPPL. inparams ($ sym, $ data_vars )
53
+ if DynamicPPL. inargnames ($ sym, $ model )
54
54
# Evaluate the lhs
55
55
$ lhs = $ ex
56
56
if $ lhs === missing
@@ -64,9 +64,7 @@ macro preprocess(data_vars, missing_vars, ex::Union{Symbol, Expr})
64
64
end
65
65
end )
66
66
end
67
- @generated function inparams (:: Val{s} , :: Val{t} ) where {s, t}
68
- return (s in t) ? :(true ) : :(false )
69
- end
67
+
70
68
71
69
# ################
72
70
# Main Compiler #
@@ -305,7 +303,6 @@ The `tilde` function generates `observe` expression for data variables and `assu
305
303
expressions for parameter variables, updating `model_info` in the process.
306
304
"""
307
305
function generate_tilde (left, right, model_info)
308
- arg_syms = Val ((model_info[:arg_syms ]. .. ,))
309
306
model = model_info[:main_body_names ][:model ]
310
307
vi = model_info[:main_body_names ][:vi ]
311
308
ctx = model_info[:main_body_names ][:ctx ]
@@ -321,7 +318,7 @@ function generate_tilde(left, right, model_info)
321
318
ex = quote
322
319
$ temp_right = $ right
323
320
$ assert_ex
324
- $ preprocessed = DynamicPPL. @preprocess ($ arg_syms, Val {DynamicPPL.getmissings($ model)} () , $ left)
321
+ $ preprocessed = DynamicPPL. @preprocess ($ model, $ left)
325
322
if $ preprocessed isa Tuple
326
323
$ vn, $ inds = $ preprocessed
327
324
$ out = DynamicPPL. tilde ($ ctx, $ sampler, $ temp_right, $ vn, $ inds, $ vi)
353
350
This function returns the expression that replaces `left .~ right` in the model body. If `preprocessed isa VarName`, then a `dot_assume` block will be run. Otherwise, a `dot_observe` block will be run.
354
351
"""
355
352
function generate_dot_tilde (left, right, model_info)
356
- arg_syms = Val ((model_info[:arg_syms ]. .. ,))
357
353
model = model_info[:main_body_names ][:model ]
358
354
vi = model_info[:main_body_names ][:vi ]
359
355
ctx = model_info[:main_body_names ][:ctx ]
@@ -370,7 +366,7 @@ function generate_dot_tilde(left, right, model_info)
370
366
ex = quote
371
367
$ temp_right = $ right
372
368
$ assert_ex
373
- $ preprocessed = DynamicPPL. @preprocess ($ arg_syms, Val {DynamicPPL.getmissings($ model)} () , $ left)
369
+ $ preprocessed = DynamicPPL. @preprocess ($ model, $ left)
374
370
if $ preprocessed isa Tuple
375
371
$ vn, $ inds = $ preprocessed
376
372
$ temp_left = $ left
0 commit comments