Skip to content

Commit 50f1943

Browse files
committed
Fix unassigned variables
1 parent 5bc3ca8 commit 50f1943

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

src/compiler.jl

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -463,6 +463,11 @@ function generate_tilde_literal(left, right)
463463
end
464464
end
465465

466+
assign_or_set!!(lhs::Symbol, rhs) = AbstractPPL.drop_escape(:($lhs = $rhs))
467+
function assign_or_set!!(lhs::Expr, rhs)
468+
return AbstractPPL.drop_escape(:($BangBang.@set!! $lhs = $rhs))
469+
end
470+
466471
"""
467472
generate_tilde(left, right)
468473
@@ -476,9 +481,6 @@ function generate_tilde(left, right)
476481
# if the LHS represents an observation
477482
@gensym vn isassumption value dist supplied_val
478483

479-
fixed_expr = :($BangBang.@set!! $left = $(DynamicPPL.getfixed_nested)(
480-
__model__.context, $(DynamicPPL.prefix)(__model__.context, $vn)
481-
))
482484
return quote
483485
$dist = $right
484486
$vn = $(DynamicPPL.resolve_varnames)($(make_varname_expression(left)), $dist)
@@ -488,7 +490,12 @@ function generate_tilde(left, right)
488490
# use Accessors.@set to safely set it.
489491
# We need overwrite=true to make sure that the parent value `x` is overwritten
490492
# after this statement.
491-
$(AbstractPPL.drop_escape(fixed_expr))
493+
$(assign_or_set!!(
494+
left,
495+
:($(DynamicPPL.getfixed_nested)(
496+
__model__.context, $(DynamicPPL.prefix)(__model__.context, $vn)
497+
)),
498+
))
492499
elseif $isassumption
493500
$(generate_tilde_assume(left, dist, vn))
494501
else
@@ -515,6 +522,7 @@ function generate_tilde(left, right)
515522
$vn,
516523
__varinfo__,
517524
)
525+
$(assign_or_set!!(left, value))
518526
$value
519527
end
520528
end

0 commit comments

Comments
 (0)