diff --git a/base/expr.jl b/base/expr.jl index 75e54a2249508..284beed95c9a4 100644 --- a/base/expr.jl +++ b/base/expr.jl @@ -388,13 +388,14 @@ macro constprop(setting) end function constprop_setting(@nospecialize setting) + s = setting isa(setting, QuoteNode) && (setting = setting.value) if setting === :aggressive return :aggressive_constprop elseif setting === :none return :no_constprop end - throw(ArgumentError(LazyString("@constprop "), setting, "not supported")) + throw(ArgumentError(LazyString("`Base.@constprop ", s, "` not supported"))) end """ diff --git a/test/misc.jl b/test/misc.jl index 79b684badf1e0..c4a12c4db8e7d 100644 --- a/test/misc.jl +++ b/test/misc.jl @@ -1402,3 +1402,15 @@ end GC.gc(true); yield() @test in_fin[] end + +@testset "`@constprop`, `@assume_effects` handling of an unknown setting" begin + for x ∈ ("constprop", "assume_effects") + try + eval(Meta.parse("Base.@$x :unknown f() = 3")) + error("unexpectedly reached") + catch e + e::LoadError + @test e.error isa ArgumentError + end + end +end