|
1 | 1 | """
|
2 |
| - AbstractPPL.prefix(vn::VarName, ::Nothing) |
3 |
| -AbstractPPL.prefix(::Nothing, vn::VarName) |
| 2 | + maybe_prefix(inner::Union{Nothing,<:VarName}, outer::Union{Nothing,<:VarName}) |
4 | 3 |
|
5 |
| -Return the original `vn` (i.e., prefixed with nothing). |
| 4 | +Prefix `inner` with the prefix `outer`. Both `inner` and `outer` can be either |
| 5 | +`VarName`s or `Nothing`. |
6 | 6 |
|
7 |
| -These cases only happen in DynamicPPL and are thus handled here (AbstractPPL's |
8 |
| -definition works only if both arguments are `VarName`s). |
| 7 | +Note that this differs from `AbstractPPL.prefix` in that it handles `nothing` values. |
| 8 | +This can happen e.g. when prefixing a model that is not already prefixed; or when |
| 9 | +executing submodels without automatic prefixing. |
9 | 10 | """
|
10 |
| -AbstractPPL.prefix(vn::VarName, ::Nothing) = vn |
11 |
| -AbstractPPL.prefix(::Nothing, vn::VarName) = vn |
| 11 | +maybe_prefix(inner::VarName, outer::VarName) = AbstractPPL.prefix(inner, outer) |
| 12 | +maybe_prefix(vn::VarName, ::Nothing) = vn |
| 13 | +maybe_prefix(::Nothing, vn::VarName) = vn |
| 14 | +maybe_prefix(::Nothing, ::Nothing) = nothing |
12 | 15 |
|
13 | 16 | """
|
14 | 17 | prefix_cond_and_fixed_variables(context::AbstractContext, prefix::VarName)
|
@@ -94,11 +97,11 @@ julia> rand(prefix(demo(), Val(:my_prefix)))
|
94 | 97 | ```
|
95 | 98 | """
|
96 | 99 | prefix(model::Model, ::Nothing) = model
|
97 |
| -function prefix(model::Model, x::VarName) |
| 100 | +function prefix(model::Model, vn::VarName) |
98 | 101 | # Add it to the model prefix field
|
99 |
| - new_prefix = AbstractPPL.prefix(model.prefix, x) |
| 102 | + new_prefix = maybe_prefix(model.prefix, vn) |
100 | 103 | # And also make sure to prefix any conditioned and fixed variables stored in the model
|
101 |
| - new_context = prefix_cond_and_fixed_variables(model.context, x) |
| 104 | + new_context = prefix_cond_and_fixed_variables(model.context, vn) |
102 | 105 | return Model(model.f, model.args, model.defaults, new_context, new_prefix)
|
103 | 106 | end
|
104 | 107 | prefix(model::Model, ::Val{sym}) where {sym} = prefix(model, VarName{sym}())
|
|
0 commit comments