@@ -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