@@ -382,34 +382,13 @@ module Issue537 end
382382 @test demo2 ()() == 42
383383 end
384384
385- @testset " @submodel is deprecated" begin
386- @model inner () = x ~ Normal ()
387- @model outer () = @submodel x = inner ()
388- @test_logs (
389- (
390- :warn ,
391- " `@submodel model` and `@submodel prefix=... model` are deprecated; see `to_submodel` for the up-to-date syntax." ,
392- ),
393- outer ()()
394- )
395-
396- @model outer_with_prefix () = @submodel prefix = " sub" x = inner ()
397- @test_logs (
398- (
399- :warn ,
400- " `@submodel model` and `@submodel prefix=... model` are deprecated; see `to_submodel` for the up-to-date syntax." ,
401- ),
402- outer_with_prefix ()()
403- )
404- end
405-
406- @testset " submodel" begin
385+ @testset " to_submodel" begin
407386 # No prefix, 1 level.
408387 @model function demo1 (x)
409388 return x ~ Normal ()
410389 end
411390 @model function demo2 (x, y)
412- @submodel demo1 (x)
391+ _ignore ~ to_submodel ( demo1 (x), false )
413392 return y ~ Uniform ()
414393 end
415394 # No observation.
@@ -441,7 +420,7 @@ module Issue537 end
441420
442421 # Check values makes sense.
443422 @model function demo3 (x, y)
444- @submodel demo1 (x)
423+ _ignore ~ to_submodel ( demo1 (x), false )
445424 return y ~ Normal (x)
446425 end
447426 m = demo3 (1000.0 , missing )
@@ -453,12 +432,10 @@ module Issue537 end
453432 x ~ Normal ()
454433 return x
455434 end
456-
457435 @model function demo_useval (x, y)
458- @submodel prefix = " sub1" x1 = demo_return (x)
459- @submodel prefix = " sub2" x2 = demo_return (y)
460-
461- return z ~ Normal (x1 + x2 + 100 , 1.0 )
436+ sub1 ~ to_submodel (demo_return (x))
437+ sub2 ~ to_submodel (demo_return (y))
438+ return z ~ Normal (sub1 + sub2 + 100 , 1.0 )
462439 end
463440 m = demo_useval (missing , missing )
464441 vi = VarInfo (m)
@@ -472,21 +449,18 @@ module Issue537 end
472449 @model function AR1 (num_steps, α, μ, σ, :: Type{TV} = Vector{Float64}) where {TV}
473450 η ~ MvNormal (zeros (num_steps), I)
474451 δ = sqrt (1 - α^ 2 )
475-
476452 x = TV (undef, num_steps)
477453 x[1 ] = η[1 ]
478454 @inbounds for t in 2 : num_steps
479455 x[t] = @. α * x[t - 1 ] + δ * η[t]
480456 end
481-
482457 return @. μ + σ * x
483458 end
484459
485460 @model function demo (y)
486461 α ~ Uniform ()
487462 μ ~ Normal ()
488463 σ ~ truncated (Normal (), 0 , Inf )
489-
490464 num_steps = length (y[1 ])
491465 num_obs = length (y)
492466 @inbounds for i in 1 : num_obs
@@ -613,14 +587,11 @@ module Issue537 end
613587 @model demo () = x ~ Normal ()
614588 retval, svi = DynamicPPL. evaluate!! (demo (), SimpleVarInfo (), SamplingContext ())
615589
616- # Return-value when using `@submodel `
590+ # Return-value when using `to_submodel `
617591 @model inner () = x ~ Normal ()
618- # Without assignment.
619- @model outer () = @submodel inner ()
620- @test outer ()() isa Real
621-
622- # With assignment.
623- @model outer () = @submodel x = inner ()
592+ @model function outer ()
593+ return _ignore ~ to_submodel (inner ())
594+ end
624595 @test outer ()() isa Real
625596
626597 # Edge-cases.
@@ -720,8 +691,7 @@ module Issue537 end
720691 return (; x, y)
721692 end
722693 @model function demo_tracked_submodel ()
723- @submodel (x, y) = demo_tracked ()
724- return (; x, y)
694+ return vals ~ to_submodel (demo_tracked (), false )
725695 end
726696 for model in [demo_tracked (), demo_tracked_submodel ()]
727697 # Make sure it's runnable and `y` is present in the return-value.
0 commit comments