@@ -269,9 +269,12 @@ function parse_variable_def!(dict, mod, arg, varclass, kwargs, where_types;
269269 return var, def, Dict ()
270270 end
271271 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 ()
275278 end
276279 _ => error (" $arg cannot be parsed" )
277280 end
@@ -674,47 +677,51 @@ end
674677function parse_variable_arg (dict, mod, arg, varclass, kwargs, where_types)
675678 vv, def, metadata_with_exprs = parse_variable_def! (
676679 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 ])
678684
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
696703 end
697704 end
698705 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
706713 end
707714 end
708- end
709715
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
715721
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
718725end
719726
720727function handle_conditional_vars! (
0 commit comments