Skip to content

Commit de94dc1

Browse files
fix: allow passing nothing to override default for @mtkmodel models
1 parent 26c3f3a commit de94dc1

File tree

2 files changed

+13
-7
lines changed

2 files changed

+13
-7
lines changed

src/systems/model_parsing.jl

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -148,24 +148,30 @@ end
148148

149149
pop_structure_dict!(dict, key) = length(dict[key]) == 0 && pop!(dict, key)
150150

151+
struct NoValue end
152+
const NO_VALUE = NoValue()
153+
151154
function update_kwargs_and_metadata!(dict, kwargs, a, def, indices, type, var,
152155
varclass, where_types, meta)
153156
if indices isa Nothing
154157
if !isnothing(meta) && haskey(meta, VariableUnit)
155158
uvar = gensym()
156159
push!(where_types, uvar)
157-
push!(kwargs, Expr(:kw, :($a::Union{Nothing, Missing, $uvar}), nothing))
160+
push!(kwargs,
161+
Expr(:kw, :($a::Union{Nothing, Missing, $NoValue, $uvar}), NO_VALUE))
158162
else
159-
push!(kwargs, Expr(:kw, :($a::Union{Nothing, Missing, $type}), nothing))
163+
push!(kwargs,
164+
Expr(:kw, :($a::Union{Nothing, Missing, $NoValue, $type}), NO_VALUE))
160165
end
161166
dict[:kwargs][getname(var)] = Dict(:value => def, :type => type)
162167
else
163168
vartype = gensym(:T)
164169
push!(kwargs,
165170
Expr(:kw,
166171
Expr(:(::), a,
167-
Expr(:curly, :Union, :Nothing, Expr(:curly, :AbstractArray, vartype))),
168-
nothing))
172+
Expr(:curly, :Union, :Nothing, :Missing, NoValue,
173+
Expr(:curly, :AbstractArray, vartype))),
174+
NO_VALUE))
169175
if !isnothing(meta) && haskey(meta, VariableUnit)
170176
push!(where_types, vartype)
171177
else
@@ -679,7 +685,7 @@ function parse_variable_arg(dict, mod, arg, varclass, kwargs, where_types)
679685
varexpr = if haskey(metadata_with_exprs, VariableUnit)
680686
unit = metadata_with_exprs[VariableUnit]
681687
quote
682-
$name = if $name === nothing
688+
$name = if $name === $NO_VALUE
683689
$setdefault($vv, $def)
684690
else
685691
try
@@ -699,7 +705,7 @@ function parse_variable_arg(dict, mod, arg, varclass, kwargs, where_types)
699705
end
700706
else
701707
quote
702-
$name = if $name === nothing
708+
$name = if $name === $NO_VALUE
703709
$setdefault($vv, $def)
704710
else
705711
$setdefault($vv, $name)

test/model_parsing.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -840,7 +840,7 @@ end
840840
n[1:3] = if flag
841841
[2, 2, 2]
842842
else
843-
1
843+
[1, 1, 1]
844844
end
845845
end
846846
end

0 commit comments

Comments
 (0)