From 1ba5ec9f5f08c611e2c1bab84ac19ce8dd291227 Mon Sep 17 00:00:00 2001 From: Valentin Churavy Date: Wed, 24 Apr 2024 12:33:18 -0400 Subject: [PATCH 1/2] Add test for Overlay Method Table --- test/runtests.jl | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/test/runtests.jl b/test/runtests.jl index c95c8321..9d0f76e7 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -3855,6 +3855,36 @@ do_test("includet with mod arg (issue #689)") && @testset "includet with mod arg @test Driver.Codes.Common.foo == 2 end +do_test("Overlay Method Tables") && @testset "Overlay Method Tables" begin + # Issue #646 + testdir = newtestdir() + file = joinpath(testdir, "overlaymt.jl") + write(file, """ + Base.Experimental.@MethodTable(method_table) + + foo_mt() = 1 + Base.Experimental.@overlay Main.method_table foo_mt() = 2 + """) + sleep(mtimedelay) + includet(file) + @test foo_mt() == 1 + methods = Base._methods_by_ftype(Tuple{typeof(foo_mt)}, method_table, 1, Base.get_world_counter()) + ci = Base.uncompressed_ir(methods[1].method) + @test ci.code[end] == Core.ReturnNode(2) + sleep(mtimedelay) + write(file, """ + Base.Experimental.@MethodTable(method_table) + + foo_mt() = 1 + Base.Experimental.@overlay Main.method_table foo_mt() = 3 + """) + sleep(mtimedelay) + @test foo_mt() == 1 + methods = Base._methods_by_ftype(Tuple{typeof(foo_mt)}, method_table, 1, Base.get_world_counter()) + ci = Base.uncompressed_ir(methods[1].method) + @test_broken ci.code[end] == Core.ReturnNode(3) +end + do_test("misc - coverage") && @testset "misc - coverage" begin @test Revise.ReviseEvalException("undef", UndefVarError(:foo)).loc isa String @test !Revise.throwto_repl(UndefVarError(:foo)) From 358e080b859005591a21fa6b13e9e5b0454e25cb Mon Sep 17 00:00:00 2001 From: Valentin Churavy Date: Mon, 10 Feb 2025 13:16:31 +0100 Subject: [PATCH 2/2] Apply suggestions from code review --- test/runtests.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index 9d0f76e7..abed1fb4 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -3863,7 +3863,7 @@ do_test("Overlay Method Tables") && @testset "Overlay Method Tables" begin Base.Experimental.@MethodTable(method_table) foo_mt() = 1 - Base.Experimental.@overlay Main.method_table foo_mt() = 2 + Base.Experimental.@overlay method_table foo_mt() = 2 """) sleep(mtimedelay) includet(file) @@ -3876,7 +3876,7 @@ do_test("Overlay Method Tables") && @testset "Overlay Method Tables" begin Base.Experimental.@MethodTable(method_table) foo_mt() = 1 - Base.Experimental.@overlay Main.method_table foo_mt() = 3 + Base.Experimental.@overlay method_table foo_mt() = 3 """) sleep(mtimedelay) @test foo_mt() == 1