@@ -155,16 +155,27 @@ end
155
155
# Overdub{Intercept} #
156
156
# --------------------#
157
157
158
+ function _overdub_generator end
159
+
158
160
for N in 0 : MAX_ARGS
159
161
arg_names = [Symbol (" _CASSETTE_$i " ) for i in 2 : (N+ 1 )]
160
162
arg_types = [:(unwrap (C, $ T)) for T in arg_names]
163
+ stub = Core. GeneratedFunctionStub (_overdub_generator,
164
+ Any[:f , arg_names... ],
165
+ Any[:F , :C , :M , :world , :debug ],
166
+ @__LINE__ ,
167
+ Symbol (@__FILE__ ),
168
+ true )
161
169
@eval begin
162
- @generated function (f:: Overdub{Intercept,F,Settings{C,M,world,debug}} )( $ (arg_names... )) where {F,C,M,world,debug}
170
+ function _overdub_generator (f:: Overdub{Intercept,F,Settings{C,M,world,debug}} , $ (arg_names... )) where {F,C,M,world,debug}
163
171
signature = Tuple{unwrap (C, F),$ (arg_types... )}
164
- method_body = lookup_method_body (signature, $ arg_names, world, debug)
172
+ method, method_body = lookup_method_body (signature, $ arg_names, world, debug)
165
173
if isa (method_body, CodeInfo)
166
174
method_body = overdub_new! (overdub_calls! (getpass (C, M)(signature, method_body)))
167
175
method_body. inlineable = true
176
+ if isa (method, Method)
177
+ method_body. method_for_inference_heuristics = method
178
+ end
168
179
else
169
180
arg_names = $ arg_names
170
181
method_body = quote
@@ -175,5 +186,8 @@ for N in 0:MAX_ARGS
175
186
debug && Core. println (" RETURNING Overdub(...) BODY: " , method_body)
176
187
return method_body
177
188
end
189
+ function (f:: Overdub{Intercept,F,Settings{C,M,world,debug}} )($ (arg_names... )) where {F,C,M,world,debug}
190
+ $ (Expr (:meta , :generated_only , stub))
191
+ end
178
192
end
179
193
end
0 commit comments