@@ -232,81 +232,48 @@ function parse_variable_def!(dict, mod, arg, varclass, kwargs, where_types;
232232 varclass, where_types, meta)
233233 return var, def, Dict ()
234234 end
235- Expr (:tuple , Expr (:ref , a, b... ), y) => begin
235+ Expr (:tuple , Expr (:ref , a, b... ), y) || Expr (:tuple , Expr (:(:: ), Expr (:ref , a, b... ), n), y) => begin
236+ isdefined (mod, :n ) || (n = Real)
236237 varname = Meta. isexpr (a, :call ) ? a. args[1 ] : a
237238 push! (kwargs, Expr (:kw , varname, nothing ))
238239 varval = unit_handled_variable_value (mod, y, varname)
239240 if varclass == :parameters
240- var = :($ varname = $ first (@parameters $ a[$ (b... )] = ($ varval, $ y)))
241+ var = :($ varname = $ first (@parameters $ a[$ (b... )]:: $n = ($ varval, $ y)))
241242 else
242- var = :($ varname = $ first (@variables $ a[$ (b... )] = ($ varval, $ y)))
243+ var = :($ varname = $ first (@variables $ a[$ (b... )]:: $n = ($ varval, $ y)))
243244 end
244245 # TODO : update `dict` aka `Model.structure` with the metadata
245246 (:($ varname... ), var), nothing , Dict ()
246247 end
247- Expr (:(= ), Expr (:ref , a, b... ), y) => begin
248+ Expr (:(= ), Expr (:ref , a, b... ), y) || Expr (:(= ), Expr (:(:: ), Expr (:ref , a, b... ), n), y) => begin
249+ isdefined (mod, :n ) || (n = Real)
248250 varname = Meta. isexpr (a, :call ) ? a. args[1 ] : a
249251 if Meta. isexpr (y, :tuple )
250252 varval = unit_handled_variable_value (mod, y, varname)
251253 val, y = (y. args[1 ], y. args[2 : end ])
252254 push! (kwargs, Expr (:kw , varname, nothing ))
253255 if varclass == :parameters
254256 var = :($ varname = $ varname === nothing ? $ val : $ varname;
255- $ varname = $ first (@parameters $ a[$ (b... )] = (
257+ $ varname = $ first (@parameters $ a[$ (b... )]:: $n = (
256258 $ varval, $ (y... ))))
257- else
258- var = :($ varname = $ varname === nothing ? $ val : $ varname;
259- $ varname = $ first (@variables $ a[$ (b... )] = (
260- $ varval, $ (y... ))))
261- end
262- else
263- push! (kwargs, Expr (:kw , varname, nothing ))
264- if varclass == :parameters
265- var = :($ varname = $ varname === nothing ? $ y : $ varname; $ varname = $ first (@parameters $ a[$ (b... )] = $ varname))
266- else
267- var = :($ varname = $ varname === nothing ? $ y : $ varname; $ varname = $ first (@variables $ a[$ (b... )] = $ varname))
268- end
269- end
270- # TODO : update `dict`` aka `Model.structure` with the metadata
271- (:($ varname... ), var), nothing , Dict ()
272- end
273- Expr (:(= ), Expr (:(:: ), Expr (:ref , a, b... ), n), y) => begin
274- varname = Meta. isexpr (a, :call ) ? a. args[1 ] : a
275- varval = unit_handled_variable_value (mod, y, varname)
276- if Meta. isexpr (y, :tuple )
277- val, y = (y. args[1 ], y. args[2 : end ])
278- push! (kwargs, Expr (:kw , varname, nothing ))
279- if varclass == :parameters
280- var = :($ varname = $ varname = $ varname === nothing ? $ val : $ varname;
281- $ varname = $ first (@parameters $ a[$ (b... )]:: $n = ($ varval, $ (y... ))))
282259 else
283260 var = :($ varname = $ varname === nothing ? $ val : $ varname;
284261 $ varname = $ first (@variables $ a[$ (b... )]:: $n = (
285262 $ varval, $ (y... ))))
286263 end
287264 else
288- push! (kwargs, Expr (:kw , varname, y ))
265+ push! (kwargs, Expr (:kw , varname, nothing ))
289266 if varclass == :parameters
290- var = :($ varname = $ first (@parameters $ a[$ (b... )]:: $n = $ varval))
267+ var = :($ varname = $ varname === nothing ? $ y : $ varname;
268+ $ varname = $ first (@parameters $ a[$ (b... )]:: $n = $ varname))
291269 else
292- var = :($ varname = $ first (@variables $ a[$ (b... )]:: $n = $ varval))
270+ var = :($ varname = $ varname === nothing ? $ y : $ varname;
271+ $ varname = $ first (@variables $ a[$ (b... )]:: $n = $ varname))
293272 end
294273 end
295274 # TODO : update `dict`` aka `Model.structure` with the metadata
296275 (:($ varname... ), var), nothing , Dict ()
297276 end
298- Expr (:tuple , Expr (:(:: ), Expr (:ref , a, b... ), n), y) => begin
299- varname = Meta. isexpr (a, :call ) ? a. args[1 ] : a
300- varval = unit_handled_variable_value (mod, y, varname)
301- push! (kwargs, Expr (:kw , varname, nothing ))
302- if varclass == :parameters
303- var = :($ varname = $ first (@parameters $ a[$ (b... )]:: $n = ($ varval, $ y)))
304- else
305- var = :($ varname = $ first (@variables $ a[$ (b... )]:: $n = ($ varval, $ y)))
306- end
307- # TODO : update `dict` aka `Model.structure` with the metadata
308- (:($ varname... ), var), nothing , Dict ()
309- end
310277 Expr (:ref , a, b... ) => begin
311278 varname = a isa Expr && a. head == :call ? a. args[1 ] : a
312279 push! (kwargs, Expr (:kw , varname, nothing ))
@@ -478,7 +445,6 @@ function parse_default(mod, a)
478445end
479446
480447function parse_metadata (mod, a:: Expr )
481- @info a typeof (a)
482448 MLStyle. @match a begin
483449 Expr (:vect , b... ) => Dict (parse_metadata (mod, m) for m in b)
484450 Expr (:tuple , a, b... ) => parse_metadata (mod, b)
0 commit comments