JuliaLang / julia

The Julia Programming Language
https://julialang.org/
MIT License
45.42k stars 5.45k forks source link

missing ambiguity detection for some Varargs Union? #19115

Closed vtjnash closed 4 years ago

vtjnash commented 7 years ago
julia> using LegacyStrings

julia> string('a')
"a"

julia> methods(string, (Char,))
#0 methods for generic function "string":

julia> methods(string)
...
string(a::Union{Char,String}...) at strings/string.jl:179
...
string(a::Union{Char,LegacyStrings.ASCIIString,LegacyStrings.UTF8String}...) at /Users/jameson/.julia/v0.6/LegacyStrings/src/utf8.jl:161
...
JeffBezanson commented 7 years ago

Works with a new function, so must involve cache updates somehow:

julia> str(a::Union{Char,String}...) = 0
str (generic function with 1 method)

julia> str(a::Union{Char,LegacyStrings.ASCIIString,LegacyStrings.UTF8String}...) = 1
str (generic function with 2 methods)

julia> str('a')
ERROR: MethodError: str(::Char) is ambiguous. Candidates:
  str(a::Union{Char,LegacyStrings.ASCIIString,LegacyStrings.UTF8String}...) at REPL[3]:1
  str(a::Union{Char,String}...) at REPL[2]:1
KristofferC commented 4 years ago

Original example doesn't repro anymore (maybe because of changes in LegacyStrings). Closing as stale.