Running this code in the REPL (rather than precompile in a package) in 1.8 throws a slightly different error that might hint at a cause. It does not cause this on 1.7
module M
struct MyType; end
function Base.:(==)(s1::Union{Float64, MyType, Nothing}, s2::Union{Float64, MyType, Nothing})
......
end
end
│ exception =
│ MethodError: ==(::Float64, ::Float64) is ambiguous. Candidates:
│ ==(x::T, y::T) where T<:Union{Float16, Float32, Float64} in Base at float.jl:410
│ ==(s1::Union{Nothing, Main.M.MyType, Float64}, s2::Union{Nothing, Main.M.MyType, Float64}) in Main.M at REPL[1]:3
│ Possible fix, define
│ ==(::Float64, ::Float64)
│ Stacktrace:
│ [1] ==(x::Float64, y::Int64)
│ @ Base .\float.jl:448
│ [2] edit_insert(s::REPL.LineEdit.PromptState, c::Union{Char, SubString{String}, String})
│ @ REPL.LineEdit C:\Users\avik\.julia\juliaup\julia-1.8.2+0.x64\share\julia\stdlib\v1.8\REPL\src\LineEdit.jl:0
│ [3] edit_insert(s::REPL.LineEdit.MIState, args::Any)
│ @ REPL.LineEdit C:\Users\avik\.julia\juliaup\julia-1.8.2+0.x64\share\julia\stdlib\v1.8\REPL\src\LineEdit.jl:239
│ [4] (::REPL.LineEdit.var"#137#191")(s::REPL.LineEdit.MIState, data::Any, c::Union{Char, SubString{String}, String})