Skip to content

Commit 3b26a5b

Browse files
committed
define CassetteOverlayGenerator
1 parent f759a46 commit 3b26a5b

1 file changed

Lines changed: 16 additions & 13 deletions

File tree

src/CassetteOverlay.jl

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,21 @@ macro nonoverlay(ex)
3030
return esc(out)
3131
end
3232

33-
function make_overlay_generator(selfname::Symbol, fargsname::Symbol)
34-
function overlay_generator(world::UInt, source::LineNumberNode, passtype, fargtypes)
35-
@nospecialize passtype fargtypes
36-
try
37-
return generate_overlay_src(world, source, passtype, fargtypes, selfname, fargsname)
38-
catch err
39-
# internal error happened - return an expression to raise the special exception
40-
return generate_internalerr_ex(
41-
err, #=bt=#catch_backtrace(), #=context=#:overlay_generator, world, source,
42-
#=argnames=#Core.svec(selfname, fargsname), #=spnames=#Core.svec(),
43-
#=metadata=#(; world, source, passtype, fargtypes))
44-
end
33+
struct CassetteOverlayGenerator
34+
selfname::Symbol
35+
fargsname::Symbol
36+
end
37+
function (generator::CassetteOverlayGenerator)(world::UInt, source::LineNumberNode, passtype, fargtypes)
38+
@nospecialize passtype fargtypes
39+
(; selfname, fargsname) = generator
40+
try
41+
return generate_overlay_src(world, source, passtype, fargtypes, selfname, fargsname)
42+
catch err
43+
# internal error happened - return an expression to raise the special exception
44+
return generate_internalerr_ex(
45+
err, #=bt=#catch_backtrace(), #=context=#:CassetteOverlayGenerator, world, source,
46+
#=argnames=#Core.svec(selfname, fargsname), #=spnames=#Core.svec(),
47+
#=metadata=#(; world, source, passtype, fargtypes))
4548
end
4649
end
4750

@@ -111,7 +114,7 @@ macro overlaypass(args...)
111114
# the main code transformation pass
112115
mainpass = quote
113116
function (pass::$PassName)(fargs...)
114-
$(Expr(:meta, :generated, make_overlay_generator(:pass, :fargs)))
117+
$(Expr(:meta, :generated, CassetteOverlayGenerator(:pass, :fargs)))
115118
# also include a fallback implementation that will be used when this method
116119
# is dynamically dispatched with `!isdispatchtuple` signatures.
117120
return first(fargs)(Base.tail(fargs)...)

0 commit comments

Comments
 (0)