@@ -363,59 +363,49 @@ julia> @varname(x) in keys(VarInfo(submodel_noprefix()))
363363true
364364
365365julia> # Using a static string.
366- @model submodel_prefix_string() = a = @returned_quantities @prefix inner() "my prefix"
366+ @model submodel_prefix_string() = a = @returned_quantities @prefix( inner(), "my prefix")
367367submodel_prefix_string (generic function with 2 methods)
368368
369369julia> @varname(var"my prefix.x") in keys(VarInfo(submodel_prefix_string()))
370370true
371371
372372julia> # Using string interpolation.
373- @model submodel_prefix_interpolation() = a = @returned_quantities @prefix inner() "\$ (nameof(inner()))"
373+ @model submodel_prefix_interpolation() = a = @returned_quantities @prefix( inner(), "\$ (nameof(inner()))")
374374submodel_prefix_interpolation (generic function with 2 methods)
375375
376376julia> @varname(var"inner.x") in keys(VarInfo(submodel_prefix_interpolation()))
377377true
378378
379379julia> # Or using some arbitrary expression.
380- @model submodel_prefix_expr() = a = @returned_quantities prefix= 1 + 2 inner( )
380+ @model submodel_prefix_expr() = a = @returned_quantities @ prefix(inner(), 1 + 2)
381381submodel_prefix_expr (generic function with 2 methods)
382382
383383julia> @varname(var"3.x") in keys(VarInfo(submodel_prefix_expr()))
384384true
385385```
386386"""
387387macro returned_quantities (expr)
388- return returned_quantities_expr (:(prefix = false ), expr)
389- end
390-
391- macro returned_quantities (prefix_expr, expr)
392- return returned_quantities_expr (prefix_expr, expr)
388+ return returned_quantities_expr (expr)
393389end
394390
395391"""
396- @ returned_quantities_expr model
392+ returned_quantities_expr(model_expr[, ctx_expr])
397393
398394Returns an expression that captures the return-values of a model in addition to the varinfo.
399- """
400- function returned_quantities_expr (prefix_expr, expr, ctx= esc (:__context__ ))
401- prefix_left, prefix = getargs_assignment (prefix_expr)
402- if prefix_left != = :prefix
403- error (" $(prefix_left) is not a valid kwarg" )
404- end
405395
396+ !!! warning
397+ This is only meant to be used in the body of `@model`.
398+ """
399+ function returned_quantities_expr (model_expr, ctx_expr= esc (:__context__ ))
406400 # The user expects `@returned_quantities ...` to return the
407401 # return-value of the `...`, hence we need to capture
408402 # the return-value and handle it correctly.
409403 @gensym retval
410404
411- # Prefix.
412- if prefix != = nothing
413- ctx = prefix_submodel_context (prefix, ctx)
414- end
415405 return quote
416406 # Evaluate the model and capture the return values + varinfo.
417407 $ retval, $ (esc (:__varinfo__ )) = $ (_evaluate!!)(
418- $ (esc (expr )), $ (esc (:__varinfo__ )), $ (ctx )
408+ $ (esc (model_expr )), $ (esc (:__varinfo__ )), $ (ctx_expr )
419409 )
420410
421411 # Return the return-value of the model.
0 commit comments