@@ -232,55 +232,56 @@ 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) ||  Expr (:tuple , Expr (:( :: ),  Expr ( : ref... ), n ), y) =>  begin 
236-             isdefined (mod,  :n ) ||  (n  =  Real)
235+         Expr (:tuple , Expr (:( :: ),  Expr ( : ref... ), type),  y) ||  Expr (:tuple , Expr (:ref , a, b... ), y) =>  begin 
236+             ( @isdefined  type ) ||  (type  =  Real)
237237            varname =  Meta. isexpr (a, :call ) ?  a. args[1 ] :  a
238238            push! (kwargs, Expr (:kw , varname, nothing ))
239239            varval =  unit_handled_variable_value (mod, y, varname)
240240            if  varclass ==  :parameters 
241-                 var =  :($ varname =  $ first (@parameters  $ a[$ (b... )]:: $n   =  ($ varval, $ y)))
241+                 var =  :($ varname =  $ first (@parameters  $ a[$ (b... )]:: $type   =  ($ varval, $ y)))
242242            else 
243-                 var =  :($ varname =  $ first (@variables  $ a[$ (b... )]:: $n   =  ($ varval, $ y)))
243+                 var =  :($ varname =  $ first (@variables  $ a[$ (b... )]:: $type   =  ($ varval, $ y)))
244244            end 
245245            # TODO : update `dict` aka `Model.structure` with the metadata
246246            (:($ varname... ), var), nothing , Dict ()
247247        end 
248-         Expr (:(= ), Expr (:ref , a, b... ), y) ||  Expr (:(= ), Expr (:( :: ),  Expr ( : ref... ), n ), y) =>  begin 
249-             isdefined (mod,  :n ) ||  (n  =  Real)
248+         Expr (:(= ), Expr (:( :: ),  Expr ( : ref... ), type),  y) ||  Expr (:(= ), Expr (:ref , a, b... ), y) =>  begin 
249+             ( @isdefined  type ) ||  (type  =  Real)
250250            varname =  Meta. isexpr (a, :call ) ?  a. args[1 ] :  a
251251            if  Meta. isexpr (y, :tuple )
252252                varval =  unit_handled_variable_value (mod, y, varname)
253253                val, y =  (y. args[1 ], y. args[2 : end ])
254254                push! (kwargs, Expr (:kw , varname, nothing ))
255255                if  varclass ==  :parameters 
256256                    var =  :($ varname =  $ varname ===  nothing  ?  $ val :  $ varname;
257-                     $ varname =  $ first (@parameters  $ a[$ (b... )]:: $n   =  (
257+                     $ varname =  $ first (@parameters  $ a[$ (b... )]:: $type   =  (
258258                        $ varval, $ (y... ))))
259259                else 
260260                    var =  :($ varname =  $ varname ===  nothing  ?  $ val :  $ varname;
261-                     $ varname =  $ first (@variables  $ a[$ (b... )]:: $n   =  (
261+                     $ varname =  $ first (@variables  $ a[$ (b... )]:: $type   =  (
262262                        $ varval, $ (y... ))))
263263                end 
264264            else 
265265                push! (kwargs, Expr (:kw , varname, nothing ))
266266                if  varclass ==  :parameters 
267267                    var =  :($ varname =  $ varname ===  nothing  ?  $ y :  $ varname;
268-                     $ varname =  $ first (@parameters  $ a[$ (b... )]:: $n   =  $ varname))
268+                     $ varname =  $ first (@parameters  $ a[$ (b... )]:: $type   =  $ varname))
269269                else 
270270                    var =  :($ varname =  $ varname ===  nothing  ?  $ y :  $ varname;
271-                     $ varname =  $ first (@variables  $ a[$ (b... )]:: $n   =  $ varname))
271+                     $ varname =  $ first (@variables  $ a[$ (b... )]:: $type   =  $ varname))
272272                end 
273273            end 
274274            # TODO : update `dict`` aka `Model.structure` with the metadata
275275            (:($ varname... ), var), nothing , Dict ()
276276        end 
277-         Expr (:ref , a, b... ) =>  begin 
277+         Expr (:(:: ), Expr (:ref , a, b... ), type) ||  Expr (:ref , a, b... ) =>  begin 
278+             (@isdefined  type) ||  (type =  Real)
278279            varname =  a isa  Expr &&  a. head ==  :call  ?  a. args[1 ] :  a
279280            push! (kwargs, Expr (:kw , varname, nothing ))
280281            if  varclass ==  :parameters 
281-                 var =  :($ varname =  $ first (@parameters  $ a[$ (b... )] =  $ varname))
282+                 var =  :($ varname =  $ first (@parameters  $ a[$ (b... )]:: $type  =  $ varname))
282283            elseif  varclass ==  :variables 
283-                 var =  :($ varname =  $ first (@variables  $ a[$ (b... )] =  $ varname))
284+                 var =  :($ varname =  $ first (@variables  $ a[$ (b... )]:: $type  =  $ varname))
284285            else 
285286                throw (" Symbolic array with arbitrary length is not handled for $varclass .
286287                    Please open an issue with an example."  )
0 commit comments