@@ -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 , a, b... ), n ), y) => begin
236- isdefined (mod, :n ) || (n = Real)
235+ Expr (:tuple , Expr (:( :: ), Expr ( : ref , a, b... ), 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 , a, b... ), n ), y) => begin
249- isdefined (mod, :n ) || (n = Real)
248+ Expr (:(= ), Expr (:( :: ), Expr ( : ref , a, b... ), 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