@@ -207,41 +207,41 @@ ERROR: LoadError: cannot automatically prefix with no left-hand side
207207 resolved at runtime.
208208"""
209209macro submodel (prefix_expr, expr)
210- return submodel (prefix_expr, expr, esc (:__model__ . context ))
210+ return submodel (prefix_expr, expr, esc (:__model__ ))
211211end
212212
213213# Automatic prefixing.
214- function prefix_submodel_context (prefix:: Bool , left:: Symbol , ctx )
215- return prefix ? prefix_submodel_context (left, ctx ) : ctx
214+ function prefix_submodel_context (prefix:: Bool , left:: Symbol , model )
215+ return prefix ? prefix_submodel_context (left, model ) : :( $ model . context)
216216end
217217
218- function prefix_submodel_context (prefix:: Bool , left:: Expr , ctx )
219- return prefix ? prefix_submodel_context (varname (left), ctx ) : ctx
218+ function prefix_submodel_context (prefix:: Bool , left:: Expr , model )
219+ return prefix ? prefix_submodel_context (varname (left), model ) : :( $ model . context)
220220end
221221
222222# Manual prefixing.
223- prefix_submodel_context (prefix, left, ctx ) = prefix_submodel_context (prefix, ctx )
224- function prefix_submodel_context (prefix, ctx )
223+ prefix_submodel_context (prefix, left, model ) = prefix_submodel_context (prefix, model )
224+ function prefix_submodel_context (prefix, model )
225225 # E.g. `prefix="asd[$i]"` or `prefix=asd` with `asd` to be evaluated.
226- return :($ (PrefixContext)($ (Val)($ (Symbol)($ (esc (prefix)))), $ ctx ))
226+ return :($ (PrefixContext)($ (Val)($ (Symbol)($ (esc (prefix)))), $ model . context ))
227227end
228228
229- function prefix_submodel_context (prefix:: Union{AbstractString,Symbol} , ctx )
229+ function prefix_submodel_context (prefix:: Union{AbstractString,Symbol} , model )
230230 # E.g. `prefix="asd"`.
231- return :($ (PrefixContext)($ (esc (Meta. quot (Val (Symbol (prefix))))), $ ctx ))
231+ return :($ (PrefixContext)($ (esc (Meta. quot (Val (Symbol (prefix))))), $ model . context ))
232232end
233233
234- function prefix_submodel_context (prefix:: Bool , ctx )
234+ function prefix_submodel_context (prefix:: Bool , model )
235235 if prefix
236236 error (" cannot automatically prefix with no left-hand side" )
237237 end
238238
239- return ctx
239+ return :( $ model . context)
240240end
241241
242242const SUBMODEL_DEPWARN_MSG = " `@submodel model` and `@submodel prefix=... model` are deprecated; see `to_submodel` for the up-to-date syntax."
243243
244- function submodel (prefix_expr, expr, ctx = esc (:__model__ . context ))
244+ function submodel (prefix_expr, expr, model = esc (:__model__ ))
245245 prefix_left, prefix = getargs_assignment (prefix_expr)
246246 if prefix_left != = :prefix
247247 error (" $(prefix_left) is not a valid kwarg" )
@@ -257,7 +257,7 @@ function submodel(prefix_expr, expr, ctx=esc(:__model__.context))
257257 # `prefix=...` => use it.
258258 args_assign = getargs_assignment (expr)
259259 return if args_assign === nothing
260- ctx = prefix_submodel_context (prefix, ctx )
260+ ctx = prefix_submodel_context (prefix, model )
261261 quote
262262 # Raise deprecation warning to let user know that we recommend using `left ~ to_submodel(model)`.
263263 $ (Base. depwarn)(SUBMODEL_DEPWARN_MSG, Symbol (" @submodel" ))
@@ -271,7 +271,7 @@ function submodel(prefix_expr, expr, ctx=esc(:__model__.context))
271271 L, R = args_assign
272272 # Now that we have `L` and `R`, we can prefix automagically.
273273 try
274- ctx = prefix_submodel_context (prefix, L, ctx )
274+ ctx = prefix_submodel_context (prefix, L, model )
275275 catch e
276276 error (
277277 " failed to determine prefix from $(L) ; please specify prefix using the `@submodel prefix=\" your prefix\" ...` syntax" ,
0 commit comments