@@ -278,7 +278,7 @@ function generate_tilde(left, right, model_info)
278278    ctx =  model_info[:main_body_names ][:ctx ]
279279    sampler =  model_info[:main_body_names ][:sampler ]
280280
281-     @gensym  tmpright
281+     @gensym  tmpright tmpleft 
282282    top =  [:($ tmpright =  $ right),
283283           :($ tmpright isa  Union{$ Distribution,AbstractVector{<: $Distribution }}
284284             ||  throw (ArgumentError ($ DISTMSG)))]
@@ -290,8 +290,8 @@ function generate_tilde(left, right, model_info)
290290        assumption =  [
291291            :($ out =  $ (DynamicPPL. tilde_assume)($ ctx, $ sampler, $ tmpright, $ vn, $ inds,
292292                                                $ vi)),
293-             :($ left  =   $ out[1 ] ),
294-             :($ (DynamicPPL . acclogp!)( $ vi,  $ out[2 ]) )
293+             :($ (DynamicPPL . acclogp!)( $ vi,  $ out[2 ]) ),
294+             :($ left  =   $ out[1 ] )
295295        ]
296296
297297        #  It can only be an observation if the LHS is an argument of the model
@@ -303,11 +303,13 @@ function generate_tilde(left, right, model_info)
303303                if  $ isassumption
304304                    $ (assumption... )
305305                else 
306+                     $ tmpleft =  $ left
306307                    $ (DynamicPPL. acclogp!)(
307308                        $ vi,
308-                         $ (DynamicPPL. tilde_observe)($ ctx, $ sampler, $ tmpright, $ left , $ vn,
309+                         $ (DynamicPPL. tilde_observe)($ ctx, $ sampler, $ tmpright, $ tmpleft , $ vn,
309310                                                    $ inds, $ vi)
310311                    )
312+                     $ tmpleft
311313                end 
312314            end 
313315        end 
@@ -321,10 +323,12 @@ function generate_tilde(left, right, model_info)
321323    #  If the LHS is a literal, it is always an observation
322324    return  quote 
323325        $ (top... )
326+         $ tmpleft =  $ left
324327        $ (DynamicPPL. acclogp!)(
325328            $ vi,
326-             $ (DynamicPPL. tilde_observe)($ ctx, $ sampler, $ tmpright, $ left , $ vi)
329+             $ (DynamicPPL. tilde_observe)($ ctx, $ sampler, $ tmpright, $ tmpleft , $ vi)
327330        )
331+         $ tmpleft
328332    end 
329333end 
330334
@@ -341,7 +345,7 @@ function generate_dot_tilde(left, right, model_info)
341345    ctx =  model_info[:main_body_names ][:ctx ]
342346    sampler =  model_info[:main_body_names ][:sampler ]
343347
344-     @gensym  tmpright
348+     @gensym  tmpright tmpleft 
345349    top =  [:($ tmpright =  $ right),
346350           :($ tmpright isa  Union{$ Distribution,AbstractVector{<: $Distribution }}
347351             ||  throw (ArgumentError ($ DISTMSG)))]
@@ -353,8 +357,8 @@ function generate_dot_tilde(left, right, model_info)
353357        assumption =  [
354358            :($ out =  $ (DynamicPPL. dot_tilde_assume)($ ctx, $ sampler, $ tmpright, $ left,
355359                                                    $ vn, $ inds, $ vi)),
356-             :($ left . =  $ out[1 ] ),
357-             :($ (DynamicPPL . acclogp!)( $ vi,  $ out[2 ]) )
360+             :($ (DynamicPPL . acclogp!)( $ vi,  $ out[2 ]) ),
361+             :($ left . =  $ out[1 ] )
358362        ]
359363
360364        #  It can only be an observation if the LHS is an argument of the model
@@ -366,11 +370,13 @@ function generate_dot_tilde(left, right, model_info)
366370                if  $ isassumption
367371                    $ (assumption... )
368372                else 
373+                     $ tmpleft =  $ left
369374                    $ (DynamicPPL. acclogp!)(
370375                        $ vi,
371-                         $ (DynamicPPL. dot_tilde_observe)($ ctx, $ sampler, $ tmpright, $ left ,
376+                         $ (DynamicPPL. dot_tilde_observe)($ ctx, $ sampler, $ tmpright, $ tmpleft ,
372377                                                        $ vn, $ inds, $ vi)
373378                    )
379+                     $ tmpleft
374380                end 
375381            end 
376382        end 
@@ -384,10 +390,12 @@ function generate_dot_tilde(left, right, model_info)
384390    #  If the LHS is a literal, it is always an observation
385391    return  quote 
386392        $ (top... )
393+         $ tmpleft =  $ left
387394        $ (DynamicPPL. acclogp!)(
388395            $ vi,
389-             $ (DynamicPPL. dot_tilde_observe)($ ctx, $ sampler, $ tmpright, $ left , $ vi)
396+             $ (DynamicPPL. dot_tilde_observe)($ ctx, $ sampler, $ tmpright, $ tmpleft , $ vi)
390397        )
398+         $ tmpleft
391399    end 
392400end 
393401
@@ -443,7 +451,6 @@ function build_output(model_info)
443451            $ ctx:: $ (DynamicPPL. AbstractContext),
444452        )
445453            $ unwrap_data_expr
446-             $ (DynamicPPL. resetlogp!)($ vi)
447454            $ main_body
448455        end 
449456
0 commit comments