Skip to content

An experimental simple method overlay mechanism for Julia

License

Notifications You must be signed in to change notification settings

JuliaDebug/CassetteOverlay.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CassetteOverlay.jl

julia> using CassetteOverlay, Test

julia> @MethodTable sintable;

julia> @overlay sintable sin(x::Union{Float32,Float64}) = cos(x);

julia> pass = @overlaypass sintable;

# run with the overlayed method
julia> @test pass(42) do a
           sin(a) * cos(a)
       end == cos(42)^2
Test Passed

# invalidate the overlayed method and make it return `cos∘sin`
julia> @overlay sintable sin(x::Union{Float32,Float64}) = cos(x) * @nonoverlay sin(x);

julia> @test pass(42) do a
           sin(a) * cos(a)
       end == cos(42)^2 * sin(42)
Test Passed