@@ -148,15 +148,18 @@ end
148148
149149pop_structure_dict! (dict, key) = length (dict[key]) == 0 && pop! (dict, key)
150150
151+ struct NoValue end
152+ const NO_VALUE = NoValue ()
153+
151154function 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, Expr (:kw , :($ a:: Union{Nothing, Missing, $NoValue, $ uvar} ), NO_VALUE ))
158161 else
159- push! (kwargs, Expr (:kw , :($ a:: Union{Nothing, Missing, $type} ), nothing ))
162+ push! (kwargs, Expr (:kw , :($ a:: Union{Nothing, Missing, $NoValue, $ type} ), NO_VALUE ))
160163 end
161164 dict[:kwargs ][getname (var)] = Dict (:value => def, :type => type)
162165 else
@@ -679,7 +682,7 @@ function parse_variable_arg(dict, mod, arg, varclass, kwargs, where_types)
679682 varexpr = if haskey (metadata_with_exprs, VariableUnit)
680683 unit = metadata_with_exprs[VariableUnit]
681684 quote
682- $ name = if $ name === nothing
685+ $ name = if $ name === $ NO_VALUE
683686 $ setdefault ($ vv, $ def)
684687 else
685688 try
@@ -699,7 +702,7 @@ function parse_variable_arg(dict, mod, arg, varclass, kwargs, where_types)
699702 end
700703 else
701704 quote
702- $ name = if $ name === nothing
705+ $ name = if $ name === $ NO_VALUE
703706 $ setdefault ($ vv, $ def)
704707 else
705708 $ setdefault ($ vv, $ name)
0 commit comments