Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Compiler/src/Compiler.jl
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ baremodule BuildSettings
using Core: ARGS, include, Int, ===
using ..Compiler: >, getindex, length

global MAX_METHODS::Int = 3
global MAX_METHODS::Int = 1

if length(ARGS) > 2 && ARGS[2] === "--buildsettings"
include(BuildSettings, ARGS[3])
Expand Down
6 changes: 6 additions & 0 deletions Compiler/src/abstractinterpretation.jl
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,12 @@ function abstract_call_gf_by_type(interp::AbstractInterpreter, @nospecialize(fun
return Future(CallMeta(Any, Any, Effects(), NoCallInfo()))
end

# Disable inference when not fully covered (similar to union split limit)
if !fully_covering(matches)
add_remark!(interp, sv, "Inference disabled for method without full coverage")
return Future(CallMeta(Any, Any, Effects(), NoCallInfo()))
end

(; valid_worlds, applicable) = matches
update_valid_age!(sv, valid_worlds) # need to record the negative world now, since even if we don't generate any useful information, inlining might want to add an invoke edge and it won't have this information anymore
if bail_out_toplevel_call(interp, sv)
Expand Down
Loading