@@ -232,81 +232,48 @@ function parse_variable_def!(dict, mod, arg, varclass, kwargs, where_types;
232
232
varclass, where_types, meta)
233
233
return var, def, Dict ()
234
234
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)
236
237
varname = Meta. isexpr (a, :call ) ? a. args[1 ] : a
237
238
push! (kwargs, Expr (:kw , varname, nothing ))
238
239
varval = unit_handled_variable_value (mod, y, varname)
239
240
if varclass == :parameters
240
- var = :($ varname = $ first (@parameters $ a[$ (b... )] = ($ varval, $ y)))
241
+ var = :($ varname = $ first (@parameters $ a[$ (b... )]:: $n = ($ varval, $ y)))
241
242
else
242
- var = :($ varname = $ first (@variables $ a[$ (b... )] = ($ varval, $ y)))
243
+ var = :($ varname = $ first (@variables $ a[$ (b... )]:: $n = ($ varval, $ y)))
243
244
end
244
245
# TODO : update `dict` aka `Model.structure` with the metadata
245
246
(:($ varname... ), var), nothing , Dict ()
246
247
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)
248
250
varname = Meta. isexpr (a, :call ) ? a. args[1 ] : a
249
251
if Meta. isexpr (y, :tuple )
250
252
varval = unit_handled_variable_value (mod, y, varname)
251
253
val, y = (y. args[1 ], y. args[2 : end ])
252
254
push! (kwargs, Expr (:kw , varname, nothing ))
253
255
if varclass == :parameters
254
256
var = :($ varname = $ varname === nothing ? $ val : $ varname;
255
- $ varname = $ first (@parameters $ a[$ (b... )] = (
257
+ $ varname = $ first (@parameters $ a[$ (b... )]:: $n = (
256
258
$ 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... ))))
282
259
else
283
260
var = :($ varname = $ varname === nothing ? $ val : $ varname;
284
261
$ varname = $ first (@variables $ a[$ (b... )]:: $n = (
285
262
$ varval, $ (y... ))))
286
263
end
287
264
else
288
- push! (kwargs, Expr (:kw , varname, y ))
265
+ push! (kwargs, Expr (:kw , varname, nothing ))
289
266
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))
291
269
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))
293
272
end
294
273
end
295
274
# TODO : update `dict`` aka `Model.structure` with the metadata
296
275
(:($ varname... ), var), nothing , Dict ()
297
276
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
310
277
Expr (:ref , a, b... ) => begin
311
278
varname = a isa Expr && a. head == :call ? a. args[1 ] : a
312
279
push! (kwargs, Expr (:kw , varname, nothing ))
@@ -478,7 +445,6 @@ function parse_default(mod, a)
478
445
end
479
446
480
447
function parse_metadata (mod, a:: Expr )
481
- @info a typeof (a)
482
448
MLStyle. @match a begin
483
449
Expr (:vect , b... ) => Dict (parse_metadata (mod, m) for m in b)
484
450
Expr (:tuple , a, b... ) => parse_metadata (mod, b)
0 commit comments