@@ -269,9 +269,12 @@ function parse_variable_def!(dict, mod, arg, varclass, kwargs, where_types;
269
269
return var, def, Dict ()
270
270
end
271
271
Expr (:ref , a, b... ) => begin
272
- indices = map (i -> UnitRange (i. args[2 ], i. args[end ]), b)
273
- parse_variable_def! (dict, mod, a, varclass, kwargs, where_types;
274
- def, indices, type, meta)
272
+ if varclass == :parameters
273
+ var = :($ a = $ first (@parameters $ a[$ (b... )]))
274
+ else
275
+ var = :($ a = $ first (@variables $ a[$ (b... )]))
276
+ end
277
+ (:($ a... ), var), nothing , Dict ()
275
278
end
276
279
_ => error (" $arg cannot be parsed" )
277
280
end
@@ -674,47 +677,51 @@ end
674
677
function parse_variable_arg (dict, mod, arg, varclass, kwargs, where_types)
675
678
vv, def, metadata_with_exprs = parse_variable_def! (
676
679
dict, mod, arg, varclass, kwargs, where_types)
677
- name = getname (vv)
680
+ if vv isa Tuple
681
+ return vv
682
+ else
683
+ name = getname (vv[1 ])
678
684
679
- varexpr = if haskey (metadata_with_exprs, VariableUnit)
680
- unit = metadata_with_exprs[VariableUnit]
681
- quote
682
- $ name = if $ name === nothing
683
- $ setdefault ($ vv, $ def)
684
- else
685
- try
686
- $ setdefault ($ vv, $ convert_units ($ unit, $ name))
687
- catch e
688
- if isa (e, $ (DynamicQuantities. DimensionError)) ||
689
- isa (e, $ (Unitful. DimensionError))
690
- error (" Unable to convert units for \' " * string (:($$ vv)) * " \' " )
691
- elseif isa (e, MethodError)
692
- error (" No or invalid units provided for \' " * string (:($$ vv)) *
693
- " \' " )
694
- else
695
- rethrow (e)
685
+ varexpr = if haskey (metadata_with_exprs, VariableUnit)
686
+ unit = metadata_with_exprs[VariableUnit]
687
+ quote
688
+ $ name = if $ name === nothing
689
+ $ setdefault ($ vv, $ def)
690
+ else
691
+ try
692
+ $ setdefault ($ vv, $ convert_units ($ unit, $ name))
693
+ catch e
694
+ if isa (e, $ (DynamicQuantities. DimensionError)) ||
695
+ isa (e, $ (Unitful. DimensionError))
696
+ error (" Unable to convert units for \' " * string (:($$ vv)) * " \' " )
697
+ elseif isa (e, MethodError)
698
+ error (" No or invalid units provided for \' " * string (:($$ vv)) *
699
+ " \' " )
700
+ else
701
+ rethrow (e)
702
+ end
696
703
end
697
704
end
698
705
end
699
- end
700
- else
701
- quote
702
- $ name = if $ name === nothing
703
- $ setdefault ( $ vv, $ def)
704
- else
705
- $ setdefault ( $ vv, $ name)
706
+ else
707
+ quote
708
+ $ name = if $ name === nothing
709
+ $ setdefault ( $ vv, $ def)
710
+ else
711
+ $ setdefault ( $ vv, $ name)
712
+ end
706
713
end
707
714
end
708
- end
709
715
710
- metadata_expr = Expr (:block )
711
- for (k, v) in metadata_with_exprs
712
- push! (metadata_expr. args,
713
- :($ name = $ wrap ($ set_scalar_metadata ($ unwrap ($ name), $ k, $ v))))
714
- end
716
+ metadata_expr = Expr (:block )
717
+ for (k, v) in metadata_with_exprs
718
+ push! (metadata_expr. args,
719
+ :($ name = $ wrap ($ set_scalar_metadata ($ unwrap ($ name), $ k, $ v))))
720
+ end
715
721
716
- push! (varexpr. args, metadata_expr)
717
- return vv isa Num ? name : :($ name... ), varexpr
722
+ push! (varexpr. args, metadata_expr)
723
+ return vv isa Num ? name : :($ name... ), varexpr
724
+ end
718
725
end
719
726
720
727
function handle_conditional_vars! (
0 commit comments