@@ -127,24 +127,24 @@ function _model_macro(mod, name, expr, isconnector)
127127 isconnector && push! (exprs. args,
128128 :($ Setfield. @set! (var"#___sys___" . connector_type= $ connector_type (var"#___sys___" ))))
129129
130- push! (exprs . args, :(alg_eqs = $ (alg_equations)( var"#___sys___" )) )
131- d_evt_exs = map (d_evts) do evt
132- length (evt . args) == 2 ?
133- :( $ SymbolicDiscreteCallback ( $ (evt . args[ 1 ]); iv = $ iv, alg_eqs, $ (evt . args[ 2 ] . .. ))) :
134- :( $ SymbolicDiscreteCallback ( $ ( evt. args[1 ]); iv = $ iv, alg_eqs))
135- end
136-
137- ! isempty (d_evts) && push! (exprs . args,
138- :( $ Setfield . @set! ( var"#___sys___" . discrete_events = [ $ (d_evt_exs ... )])))
130+ if ! isempty (d_evts) || ! isempty (c_evts )
131+ push! (exprs . args, :(alg_eqs = $ (alg_equations)( var"#___sys___" )))
132+ ! isempty (d_evts) && begin
133+ d_exprs = [:( $ (SymbolicDiscreteCallback)(
134+ $ ( evt. args[1 ]); iv = $ iv, alg_eqs, $ (evt . args[ 2 ]) . .. ))
135+ for evt in d_evts]
136+ push! (exprs . args,
137+ :( $ Setfield . @set! ( var"#___sys___" . discrete_events = [ $ (d_exprs ... )])))
138+ end
139139
140- c_evt_exs = map (c_evts) do evt
141- length (evt. args) == 2 ?
142- :($ SymbolicContinuousCallback (
143- $ (evt. args[1 ]); iv = $ iv, alg_eqs, $ (evt. args[2 ]. .. ))) :
144- :($ SymbolicContinuousCallback ($ (evt. args[1 ]); iv = $ iv, alg_eqs))
140+ ! isempty (c_evts) && begin
141+ c_exprs = [:($ (SymbolicContinuousCallback)(
142+ $ (evt. args[1 ]); iv = $ iv, alg_eqs, $ (evt. args[2 ]). .. ))
143+ for evt in c_evts]
144+ push! (exprs. args,
145+ :($ Setfield. @set! (var"#___sys___" . continuous_events= [$ (c_exprs... )])))
146+ end
145147 end
146- ! isempty (c_evts) && push! (exprs. args,
147- :($ Setfield. @set! (var"#___sys___" . continuous_events= [$ (c_evt_exs... )])))
148148
149149 f = if length (where_types) == 0
150150 :($ (Symbol (:__ , name, :__ ))(; name, $ (kwargs... )) = $ exprs)
@@ -1135,7 +1135,7 @@ function parse_continuous_events!(c_evts, dict, body)
11351135 Base. remove_linenums! (body)
11361136 for line in body. args
11371137 if length (line. args) == 3 && line. args[1 ] == :(=> )
1138- push! (c_evts, :(($ line,)))
1138+ push! (c_evts, :(($ line, () )))
11391139 elseif length (line. args) == 2
11401140 event = line. args[1 ]
11411141 kwargs = parse_event_kwargs (line. args[2 ])
@@ -1152,7 +1152,7 @@ function parse_discrete_events!(d_evts, dict, body)
11521152 Base. remove_linenums! (body)
11531153 for line in body. args
11541154 if length (line. args) == 3 && line. args[1 ] == :(=> )
1155- push! (d_evts, :(($ line,)))
1155+ push! (d_evts, :(($ line, () )))
11561156 elseif length (line. args) == 2
11571157 event = line. args[1 ]
11581158 kwargs = parse_event_kwargs (line. args[2 ])
@@ -1169,7 +1169,7 @@ function parse_event_kwargs(disc_expr)
11691169 for arg in disc_expr. args
11701170 (arg. head != :(= )) && error (" Malformed event kwarg $arg ." )
11711171 (arg. args[1 ] isa Symbol) || error (" Invalid keyword argument name $(arg. args[1 ]) ." )
1172- push! (kwargs. args, arg)
1172+ push! (kwargs. args, :( $ ( QuoteNode ( arg. args[ 1 ])) => $ (arg . args[ 2 ])) )
11731173 end
11741174 kwargs
11751175end
0 commit comments