-
-
Notifications
You must be signed in to change notification settings - Fork 5.7k
eachindex for linear indexing for Array and Memory: typeassert
#59410
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
eachindex for linear indexing for Array and Memory: typeassert
#59410
Conversation
The method return type is known concretely as `OneTo{Int}`, however the
compiler can't tell because there are too many methods matching
`length(::Array)`, over the world-splitting threshold, `max_methods`.
Cross-reference WIP PR JuliaLang#57627, which might help here in another way by
decreasing the number of unnecessary methods, however merging that PR
would also cause regressions if world-splitting is not disabled first
for `length` (xref WIP PR JuliaLang#59377).
Fix that by asserting the return type of the `length` call as `Int`.
The `typeassert` should improve abstract return type inference, and
consequently make the sysimage more resistant to invalidation.
|
how feasible would it be to add some kind of |
|
I don't know how would I make a |
|
I guess it would require a new test function calling the untypasserted |
Yeah, my previous comment was only tangentially related to your previous comment.
Yeah, that would do what you want at this moment, however it doesn't seem robust at all. What if the implementation of the I think lots of other tests do check for certain patterns in the IR, so technically we could test for |
|
The entire following tree of invalidations is eliminated with this PR: Details
{
"method_instance": {
"method": "_iterate_abstractarray(A::AbstractArray, state::Integer) @ Base abstractarray.jl:1247",
"method_instance": "MethodInstance for Base._iterate_abstractarray(::Array, ::Integer)"
},
"children": [
{
"method_instance": {
"method": "iterate(A::AbstractArray, state) @ Base abstractarray.jl:1241",
"method_instance": "MethodInstance for iterate(::Array, ::Any)"
},
"children": [
{
"method_instance": {
"method": "iterate(A::AbstractArray) @ Base abstractarray.jl:1241",
"method_instance": "MethodInstance for iterate(::Array)"
},
"children": [
{
"method_instance": {
"method": "show_list(io::IO, items, sep, indent::Int64, prec::Int64, quote_level::Int64, enclose_operators::Bool, kw::Bool) @ Base show.jl:1654",
"method_instance": "MethodInstance for Base.show_list(::IOContext{IOBuffer}, ::Array, ::String, ::Int64, ::Int64, ::Int64, ::Bool, ::Bool)"
},
"children": [
{
"method_instance": {
"method": "show_list(io::IO, items, sep, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1654",
"method_instance": "MethodInstance for Base.show_list(::IOContext{IOBuffer}, ::Vector, ::String, ::Int64, ::Int64, ::Int64)"
},
"children": [
{
"method_instance": {
"method": "show_block(io::IO, head, args::Vector, body, indent::Int64, quote_level::Int64) @ Base show.jl:1625",
"method_instance": "MethodInstance for Base.show_block(::IOContext{IOBuffer}, ::String, ::Vector, ::Expr, ::Int64, ::Int64)"
},
"children": [
{
"method_instance": {
"method": "show_unquoted(io::IO, ex::Expr, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1898",
"method_instance": "MethodInstance for Base.show_unquoted(::IOBuffer, ::Expr, ::Int64, ::Int64, ::Int64)"
},
"children": [
]
}
]
},
{
"method_instance": {
"method": "show_block(io::IO, head, args::Vector, body, indent::Int64, quote_level::Int64) @ Base show.jl:1625",
"method_instance": "MethodInstance for Base.show_block(::IOContext{IOBuffer}, ::Symbol, ::Vector, ::Any, ::Int64, ::Int64)"
},
"children": [
{
"method_instance": {
"method": "show_unquoted(io::IO, ex::Expr, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1898",
"method_instance": "MethodInstance for Base.show_unquoted(::IOBuffer, ::Expr, ::Int64, ::Int64, ::Int64)"
},
"children": [
{
"method_instance": {
"method": "show_block(io::IO, head, args::Vector, body, indent::Int64, quote_level::Int64) @ Base show.jl:1625",
"method_instance": "MethodInstance for Base.show_block(::IOBuffer, ::String, ::Vector{Any}, ::Expr, ::Int64, ::Int64)"
},
"children": [
]
},
{
"method_instance": {
"method": "show_call(io::IO, head, func, func_args, indent, quote_level, kw::Bool) @ Base show.jl:1691",
"method_instance": "MethodInstance for Base.show_call(::IOBuffer, ::Symbol, ::Any, ::Vector{Any}, ::Int64, ::Int64, ::Bool)"
},
"children": [
]
},
{
"method_instance": {
"method": "show_call(io::IO, head, func, func_args, indent, quote_level, kw::Bool) @ Base show.jl:1691",
"method_instance": "MethodInstance for Base.show_call(::IOBuffer, ::Symbol, ::Expr, ::Vector{Any}, ::Int64, ::Int64, ::Bool)"
},
"children": [
]
},
{
"method_instance": {
"method": "show_generator(io, ex::Expr, indent, quote_level) @ Base show.jl:1806",
"method_instance": "MethodInstance for Base.show_generator(::IOBuffer, ::Expr, ::Int64, ::Int64)"
},
"children": [
]
},
{
"method_instance": {
"method": "show_import_path(io::IO, ex, quote_level) @ Base show.jl:1834",
"method_instance": "MethodInstance for Base.show_import_path(::IOBuffer, ::Any, ::Int64)"
},
"children": [
{
"method_instance": {
"method": "show_import_path(io::IO, ex, quote_level) @ Base show.jl:1834",
"method_instance": "MethodInstance for Base.show_import_path(::IOBuffer, ::Any, ::Int64)"
},
"children": [
]
},
{
"method_instance": {
"method": "show_unquoted(io::IO, ex::Expr, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1898",
"method_instance": "MethodInstance for Base.show_unquoted(::IOBuffer, ::Expr, ::Int64, ::Int64, ::Int64)"
},
"children": [
]
}
]
},
{
"method_instance": {
"method": "show_list(io::IO, items, sep, indent::Int64, prec::Int64, quote_level::Int64, enclose_operators::Bool, kw::Bool) @ Base show.jl:1654",
"method_instance": "MethodInstance for Base.show_list(::IOBuffer, ::Any, ::String, ::Int64, ::Int64, ::Int64, ::Bool, ::Bool)"
},
"children": [
]
},
{
"method_instance": {
"method": "show_list(io::IO, items, sep, indent::Int64, prec::Int64, quote_level::Int64, enclose_operators::Bool, kw::Bool) @ Base show.jl:1654",
"method_instance": "MethodInstance for Base.show_list(::IOBuffer, ::Vector{Any}, ::Char, ::Int64, ::Int64, ::Int64, ::Bool, ::Bool)"
},
"children": [
]
},
{
"method_instance": {
"method": "show_list(io::IO, items, sep, indent::Int64, prec::Int64, quote_level::Int64, enclose_operators::Bool, kw::Bool) @ Base show.jl:1654",
"method_instance": "MethodInstance for Base.show_list(::IOBuffer, ::Vector{Any}, ::String, ::Int64, ::Int64, ::Int64, ::Bool, ::Bool)"
},
"children": [
{
"method_instance": {
"method": "show_call(io::IO, head, func, func_args, indent, quote_level, kw::Bool) @ Base show.jl:1691",
"method_instance": "MethodInstance for Base.show_call(::IOBuffer, ::Symbol, ::Any, ::Vector{Any}, ::Int64, ::Int64, ::Bool)"
},
"children": [
]
},
{
"method_instance": {
"method": "show_call(io::IO, head, func, func_args, indent, quote_level, kw::Bool) @ Base show.jl:1691",
"method_instance": "MethodInstance for Base.show_call(::IOBuffer, ::Symbol, ::Expr, ::Vector{Any}, ::Int64, ::Int64, ::Bool)"
},
"children": [
]
},
{
"method_instance": {
"method": "show_call(io::IO, head, func, func_args, indent, quote_level, kw::Bool) @ Base show.jl:1691",
"method_instance": "MethodInstance for Base.show_call(::IOBuffer, ::Symbol, ::Symbol, ::Vector{Any}, ::Int64, ::Int64, ::Bool)"
},
"children": [
]
},
{
"method_instance": {
"method": "show_enclosed_list(io::IO, op, items, sep, cl, indent, prec, quote_level, encl_ops, kw::Bool) @ Base show.jl:1682",
"method_instance": "MethodInstance for Base.show_enclosed_list(::IOBuffer, ::Char, ::Vector{Any}, ::String, ::Char, ::Int64, ::Int64, ::Int64, ::Bool, ::Bool)"
},
"children": [
{
"method_instance": {
"method": "show_call(io::IO, head, func, func_args, indent, quote_level, kw::Bool) @ Base show.jl:1691",
"method_instance": "MethodInstance for Base.show_call(::IOBuffer, ::Symbol, ::Any, ::Vector{Any}, ::Int64, ::Int64, ::Bool)"
},
"children": [
{
"method_instance": {
"method": "show_unquoted(io::IO, ex::Expr, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1898",
"method_instance": "MethodInstance for Base.show_unquoted(::IOBuffer, ::Expr, ::Int64, ::Int64, ::Int64)"
},
"children": [
]
}
]
},
{
"method_instance": {
"method": "show_call(io::IO, head, func, func_args, indent, quote_level, kw::Bool) @ Base show.jl:1691",
"method_instance": "MethodInstance for Base.show_call(::IOBuffer, ::Symbol, ::Expr, ::Vector{Any}, ::Int64, ::Int64, ::Bool)"
},
"children": [
]
},
{
"method_instance": {
"method": "show_call(io::IO, head, func, func_args, indent, quote_level, kw::Bool) @ Base show.jl:1691",
"method_instance": "MethodInstance for Base.show_call(::IOBuffer, ::Symbol, ::Symbol, ::Vector{Any}, ::Int64, ::Int64, ::Bool)"
},
"children": [
{
"method_instance": {
"method": "show_unquoted(io::IO, ex::Expr, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1898",
"method_instance": "MethodInstance for Base.show_unquoted(::IOBuffer, ::Expr, ::Int64, ::Int64, ::Int64)"
},
"children": [
]
}
]
},
{
"method_instance": {
"method": "show_enclosed_list(io::IO, op, items, sep, cl, indent, prec) @ Base show.jl:1682",
"method_instance": "MethodInstance for Base.show_enclosed_list(::IOBuffer, ::Char, ::Vector{Any}, ::String, ::Char, ::Int64, ::Int64)"
},
"children": [
{
"method_instance": {
"method": "show_unquoted(io::IO, ex::Expr, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1898",
"method_instance": "MethodInstance for Base.show_unquoted(::IOBuffer, ::Expr, ::Int64, ::Int64, ::Int64)"
},
"children": [
]
}
]
},
{
"method_instance": {
"method": "show_enclosed_list(io::IO, op, items, sep, cl, indent, prec, quote_level) @ Base show.jl:1682",
"method_instance": "MethodInstance for Base.show_enclosed_list(::IOBuffer, ::Char, ::Vector{Any}, ::String, ::Char, ::Int64, ::Int64, ::Int64)"
},
"children": [
{
"method_instance": {
"method": "show_unquoted(io::IO, ex::Expr, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1898",
"method_instance": "MethodInstance for Base.show_unquoted(::IOBuffer, ::Expr, ::Int64, ::Int64, ::Int64)"
},
"children": [
]
}
]
},
{
"method_instance": {
"method": "show_enclosed_list(io::IO, op, items, sep, cl, indent, prec, quote_level, encl_ops) @ Base show.jl:1682",
"method_instance": "MethodInstance for Base.show_enclosed_list(::IOBuffer, ::Char, ::Vector{Any}, ::String, ::Char, ::Int64, ::Int64, ::Int64, ::Bool)"
},
"children": [
{
"method_instance": {
"method": "show_unquoted(io::IO, ex::Expr, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1898",
"method_instance": "MethodInstance for Base.show_unquoted(::IOBuffer, ::Expr, ::Int64, ::Int64, ::Int64)"
},
"children": [
]
}
]
}
]
},
{
"method_instance": {
"method": "show_enclosed_list(io::IO, op, items, sep, cl, indent, prec, quote_level, encl_ops, kw::Bool) @ Base show.jl:1682",
"method_instance": "MethodInstance for Base.show_enclosed_list(::IOBuffer, ::String, ::Vector{Any}, ::String, ::String, ::Int64, ::Int64, ::Int64, ::Bool, ::Bool)"
},
"children": [
{
"method_instance": {
"method": "show_enclosed_list(io::IO, op, items, sep, cl, indent, prec, quote_level) @ Base show.jl:1682",
"method_instance": "MethodInstance for Base.show_enclosed_list(::IOBuffer, ::String, ::Vector{Any}, ::String, ::String, ::Int64, ::Int64, ::Int64)"
},
"children": [
{
"method_instance": {
"method": "show_unquoted(io::IO, ex::Expr, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1898",
"method_instance": "MethodInstance for Base.show_unquoted(::IOBuffer, ::Expr, ::Int64, ::Int64, ::Int64)"
},
"children": [
]
}
]
}
]
},
{
"method_instance": {
"method": "show_list(io::IO, items, sep, indent::Int64) @ Base show.jl:1654",
"method_instance": "MethodInstance for Base.show_list(::IOBuffer, ::Vector{Any}, ::String, ::Int64)"
},
"children": [
{
"method_instance": {
"method": "show_unquoted(io::IO, ex::Expr, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1898",
"method_instance": "MethodInstance for Base.show_unquoted(::IOBuffer, ::Expr, ::Int64, ::Int64, ::Int64)"
},
"children": [
]
}
]
},
{
"method_instance": {
"method": "show_list(io::IO, items, sep, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1654",
"method_instance": "MethodInstance for Base.show_list(::IOBuffer, ::Vector{Any}, ::String, ::Int64, ::Int64, ::Int64)"
},
"children": [
{
"method_instance": {
"method": "show_block(io::IO, head, args::Vector, body, indent::Int64, quote_level::Int64) @ Base show.jl:1625",
"method_instance": "MethodInstance for Base.show_block(::IOBuffer, ::String, ::Vector{Any}, ::Expr, ::Int64, ::Int64)"
},
"children": [
{
"method_instance": {
"method": "show_block(io::IO, head, block, i::Int64, quote_level::Int64) @ Base show.jl:1644",
"method_instance": "MethodInstance for Base.show_block(::IOBuffer, ::String, ::Expr, ::Int64, ::Int64)"
},
"children": [
{
"method_instance": {
"method": "show_unquoted(io::IO, ex::Expr, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1898",
"method_instance": "MethodInstance for Base.show_unquoted(::IOBuffer, ::Expr, ::Int64, ::Int64, ::Int64)"
},
"children": [
]
}
]
}
]
},
{
"method_instance": {
"method": "show_generator(io, ex::Expr, indent, quote_level) @ Base show.jl:1806",
"method_instance": "MethodInstance for Base.show_generator(::IOBuffer, ::Expr, ::Int64, ::Int64)"
},
"children": [
{
"method_instance": {
"method": "show_unquoted(io::IO, ex::Expr, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1898",
"method_instance": "MethodInstance for Base.show_unquoted(::IOBuffer, ::Expr, ::Int64, ::Int64, ::Int64)"
},
"children": [
]
}
]
},
{
"method_instance": {
"method": "show_unquoted(io::IO, ex::Expr, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1898",
"method_instance": "MethodInstance for Base.show_unquoted(::IOBuffer, ::Expr, ::Int64, ::Int64, ::Int64)"
},
"children": [
]
}
]
},
{
"method_instance": {
"method": "show_list(io::IO, items, sep, indent::Int64, prec::Int64, quote_level::Int64, enclose_operators::Bool) @ Base show.jl:1654",
"method_instance": "MethodInstance for Base.show_list(::IOBuffer, ::Vector{Any}, ::String, ::Int64, ::Int64, ::Int64, ::Bool)"
},
"children": [
{
"method_instance": {
"method": "show_unquoted(io::IO, ex::Expr, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1898",
"method_instance": "MethodInstance for Base.show_unquoted(::IOBuffer, ::Expr, ::Int64, ::Int64, ::Int64)"
},
"children": [
]
}
]
},
{
"method_instance": {
"method": "show_unquoted(io::IO, ex::Expr, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1898",
"method_instance": "MethodInstance for Base.show_unquoted(::IOBuffer, ::Expr, ::Int64, ::Int64, ::Int64)"
},
"children": [
]
}
]
},
{
"method_instance": {
"method": "show_list(io::IO, items, sep, indent::Int64, prec::Int64, quote_level::Int64, enclose_operators::Bool, kw::Bool) @ Base show.jl:1654",
"method_instance": "MethodInstance for Base.show_list(::IOBuffer, ::Vector{Any}, ::Symbol, ::Int64, ::Int64, ::Int64, ::Bool, ::Bool)"
},
"children": [
]
},
{
"method_instance": {
"method": "show_list(io::IO, items, sep, indent::Int64, prec::Int64, quote_level::Int64, enclose_operators::Bool, kw::Bool) @ Base show.jl:1654",
"method_instance": "MethodInstance for Base.show_list(::IOBuffer, ::Vector{Expr}, ::String, ::Int64, ::Int64, ::Int64, ::Bool, ::Bool)"
},
"children": [
]
},
{
"method_instance": {
"method": "show_unquoted(io::IO, ex::Expr, indent::Int64, prec::Int64) @ Base show.jl:1898",
"method_instance": "MethodInstance for Base.show_unquoted(::IOBuffer, ::Expr, ::Int64, ::Int64)"
},
"children": [
{
"method_instance": {
"method": "show_unquoted(io::IO, ex) @ Base show.jl:1525",
"method_instance": "MethodInstance for Base.show_unquoted(::IOBuffer, ::Expr)"
},
"children": [
{
"method_instance": {
"method": "show_unquoted(io::IO, ex::Expr, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1898",
"method_instance": "MethodInstance for Base.show_unquoted(::IOBuffer, ::Expr, ::Int64, ::Int64, ::Int64)"
},
"children": [
]
},
{
"method_instance": {
"method": "showerror(io::IO, ex::MethodError) @ Base errorshow.jl:255",
"method_instance": "MethodInstance for showerror(::IOBuffer, ::MethodError)"
},
"children": [
{
"method_instance": {
"method": "(::Base.var\"#which##0#which##1\")(io) @ Base reflection.jl:946",
"method_instance": "MethodInstance for (::Base.var\"#which##0#which##1\"{MethodError})(::IOBuffer)"
},
"children": [
{
"method_instance": {
"method": "var\"#sprint#439\"(context, sizehint::Integer, ::typeof(sprint), f::Function, args...) @ Base strings/io.jl:106",
"method_instance": "MethodInstance for Base.var\"#sprint#439\"(::Nothing, ::Int64, ::typeof(sprint), ::Base.var\"#which##0#which##1\"{MethodError})"
},
"children": [
{
"method_instance": {
"method": "sprint(f::Function, args...; context, sizehint) @ Base strings/io.jl:106",
"method_instance": "MethodInstance for sprint(::Base.var\"#which##0#which##1\"{MethodError})"
},
"children": [
{
"method_instance": {
"method": "which(f, t) @ Base reflection.jl:940",
"method_instance": "MethodInstance for which(::Any, ::Any)"
},
"children": [
{
"method_instance": {
"method": "_propertynames_bytype(T::Type) @ Base errorshow.jl:1230",
"method_instance": "MethodInstance for Base._propertynames_bytype(::Type)"
},
"children": [
]
},
{
"method_instance": {
"method": "functionloc(f, types) @ Base methodshow.jl:183",
"method_instance": "MethodInstance for functionloc(::Any, ::Any)"
},
"children": [
]
},
{
"method_instance": {
"method": "load_irshow!() @ Compiler ~/tmp/jl/jl/julia-cbea8cf28e/share/julia/Compiler/src/Compiler.jl:211",
"method_instance": "MethodInstance for Compiler.load_irshow!()"
},
"children": [
]
}
]
},
{
"method_instance": {
"method": "which(f, t) @ Base reflection.jl:940",
"method_instance": "MethodInstance for which(::typeof(Compiler.verify_typeinf_trim), ::Tuple{DataType, DataType, DataType})"
},
"children": [
]
},
{
"method_instance": {
"method": "which(f, t) @ Base reflection.jl:940",
"method_instance": "MethodInstance for which(::typeof(Compiler.verify_typeinf_trim), ::Tuple{DataType, DataType, DataType})"
},
"children": [
{
"method_instance": {
"method": "load_irshow!() @ Compiler ~/tmp/jl/jl/julia-cbea8cf28e/share/julia/Compiler/src/Compiler.jl:211",
"method_instance": "MethodInstance for Compiler.load_irshow!()"
},
"children": [
]
}
]
},
{
"method_instance": {
"method": "which(f, t) @ Base reflection.jl:940",
"method_instance": "MethodInstance for which(::typeof(propertynames), ::Tuple{DataType})"
},
"children": [
]
},
{
"method_instance": {
"method": "which(f, t) @ Base reflection.jl:940",
"method_instance": "MethodInstance for which(::typeof(propertynames), ::Tuple{DataType})"
},
"children": [
{
"method_instance": {
"method": "_propertynames_bytype(T::Type) @ Base errorshow.jl:1230",
"method_instance": "MethodInstance for Base._propertynames_bytype(::Type)"
},
"children": [
]
}
]
},
{
"method_instance": {
"method": "which(f, t) @ Base reflection.jl:940",
"method_instance": "MethodInstance for which(::typeof(propertynames), ::Tuple{Type})"
},
"children": [
{
"method_instance": {
"method": "_propertynames_bytype(T::Type) @ Base errorshow.jl:1230",
"method_instance": "MethodInstance for Base._propertynames_bytype(::Type)"
},
"children": [
]
}
]
}
]
}
]
}
]
}
]
},
{
"method_instance": {
"method": "var\"#sprint#439\"(context, sizehint::Integer, ::typeof(sprint), f::Function, args...) @ Base strings/io.jl:106",
"method_instance": "MethodInstance for Base.var\"#sprint#439\"(::Nothing, ::Int64, ::typeof(sprint), ::typeof(Base.show_unquoted), ::Expr)"
},
"children": [
]
}
]
}
]
},
{
"method_instance": {
"method": "show_unquoted(io::IO, ex::Expr, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1898",
"method_instance": "MethodInstance for Base.show_unquoted(::IOBuffer, ::Expr, ::Int64, ::Int64, ::Int64)"
},
"children": [
]
},
{
"method_instance": {
"method": "show_unquoted_quote_expr(io::IO, value, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1781",
"method_instance": "MethodInstance for Base.show_unquoted_quote_expr(::IOBuffer, ::Any, ::Int64, ::Int64, ::Int64)"
},
"children": [
{
"method_instance": {
"method": "show(io::IO, s::Symbol) @ Base show.jl:1485",
"method_instance": "MethodInstance for show(::IOBuffer, ::Symbol)"
},
"children": [
{
"method_instance": {
"method": "print(io::IO, x) @ Base strings/io.jl:32",
"method_instance": "MethodInstance for print(::IOBuffer, ::Symbol)"
},
"children": [
]
},
{
"method_instance": {
"method": "show_unquoted_expr_fallback(io::IO, ex::Expr, indent::Int64, quote_level::Int64) @ Base show.jl:1887",
"method_instance": "MethodInstance for Base.show_unquoted_expr_fallback(::IOBuffer, ::Expr, ::Int64, ::Int64)"
},
"children": [
{
"method_instance": {
"method": "show_list(io::IO, items, sep, indent::Int64, prec::Int64, quote_level::Int64, enclose_operators::Bool, kw::Bool) @ Base show.jl:1654",
"method_instance": "MethodInstance for Base.show_list(::IOBuffer, ::Any, ::String, ::Int64, ::Int64, ::Int64, ::Bool, ::Bool)"
},
"children": [
{
"method_instance": {
"method": "show_list(io::IO, items, sep, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1654",
"method_instance": "MethodInstance for Base.show_list(::IOBuffer, ::Any, ::String, ::Int64, ::Int64, ::Int64)"
},
"children": [
{
"method_instance": {
"method": "show_generator(io, ex::Expr, indent, quote_level) @ Base show.jl:1806",
"method_instance": "MethodInstance for Base.show_generator(::IOBuffer, ::Expr, ::Int64, ::Int64)"
},
"children": [
]
}
]
}
]
},
{
"method_instance": {
"method": "show_list(io::IO, items, sep, indent::Int64, prec::Int64, quote_level::Int64, enclose_operators::Bool, kw::Bool) @ Base show.jl:1654",
"method_instance": "MethodInstance for Base.show_list(::IOBuffer, ::Vector{Any}, ::Char, ::Int64, ::Int64, ::Int64, ::Bool, ::Bool)"
},
"children": [
{
"method_instance": {
"method": "show_list(io::IO, items, sep, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1654",
"method_instance": "MethodInstance for Base.show_list(::IOBuffer, ::Vector{Any}, ::Char, ::Int64, ::Int64, ::Int64)"
},
"children": [
{
"method_instance": {
"method": "show_unquoted(io::IO, ex::Expr, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1898",
"method_instance": "MethodInstance for Base.show_unquoted(::IOBuffer, ::Expr, ::Int64, ::Int64, ::Int64)"
},
"children": [
]
}
]
}
]
},
{
"method_instance": {
"method": "show_list(io::IO, items, sep, indent::Int64, prec::Int64, quote_level::Int64, enclose_operators::Bool, kw::Bool) @ Base show.jl:1654",
"method_instance": "MethodInstance for Base.show_list(::IOBuffer, ::Vector{Any}, ::String, ::Int64, ::Int64, ::Int64, ::Bool, ::Bool)"
},
"children": [
]
},
{
"method_instance": {
"method": "show_list(io::IO, items, sep, indent::Int64, prec::Int64, quote_level::Int64, enclose_operators::Bool, kw::Bool) @ Base show.jl:1654",
"method_instance": "MethodInstance for Base.show_list(::IOBuffer, ::Vector{Any}, ::Symbol, ::Int64, ::Int64, ::Int64, ::Bool, ::Bool)"
},
"children": [
{
"method_instance": {
"method": "show_enclosed_list(io::IO, op, items, sep, cl, indent, prec, quote_level, encl_ops, kw::Bool) @ Base show.jl:1682",
"method_instance": "MethodInstance for Base.show_enclosed_list(::IOBuffer, ::Char, ::Vector{Any}, ::Symbol, ::Char, ::Int64, ::Int64, ::Int64, ::Bool, ::Bool)"
},
"children": [
{
"method_instance": {
"method": "show_enclosed_list(io::IO, op, items, sep, cl, indent, prec, quote_level, encl_ops) @ Base show.jl:1682",
"method_instance": "MethodInstance for Base.show_enclosed_list(::IOBuffer, ::Char, ::Vector{Any}, ::Symbol, ::Char, ::Int64, ::Int64, ::Int64, ::Bool)"
},
"children": [
{
"method_instance": {
"method": "show_unquoted(io::IO, ex::Expr, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1898",
"method_instance": "MethodInstance for Base.show_unquoted(::IOBuffer, ::Expr, ::Int64, ::Int64, ::Int64)"
},
"children": [
]
}
]
}
]
},
{
"method_instance": {
"method": "show_list(io::IO, items, sep, indent::Int64, prec::Int64, quote_level::Int64, enclose_operators::Bool) @ Base show.jl:1654",
"method_instance": "MethodInstance for Base.show_list(::IOBuffer, ::Vector{Any}, ::Symbol, ::Int64, ::Int64, ::Int64, ::Bool)"
},
"children": [
{
"method_instance": {
"method": "show_unquoted(io::IO, ex::Expr, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1898",
"method_instance": "MethodInstance for Base.show_unquoted(::IOBuffer, ::Expr, ::Int64, ::Int64, ::Int64)"
},
"children": [
]
}
]
}
]
},
{
"method_instance": {
"method": "show_list(io::IO, items, sep, indent::Int64, prec::Int64, quote_level::Int64, enclose_operators::Bool, kw::Bool) @ Base show.jl:1654",
"method_instance": "MethodInstance for Base.show_list(::IOBuffer, ::Vector{Expr}, ::String, ::Int64, ::Int64, ::Int64, ::Bool, ::Bool)"
},
"children": [
{
"method_instance": {
"method": "show_enclosed_list(io::IO, op, items, sep, cl, indent, prec, quote_level, encl_ops, kw::Bool) @ Base show.jl:1682",
"method_instance": "MethodInstance for Base.show_enclosed_list(::IOBuffer, ::Char, ::Vector{Expr}, ::String, ::Char, ::Int64, ::Int64, ::Int64, ::Bool, ::Bool)"
},
"children": [
{
"method_instance": {
"method": "show_enclosed_list(io::IO, op, items, sep, cl, indent, prec) @ Base show.jl:1682",
"method_instance": "MethodInstance for Base.show_enclosed_list(::IOBuffer, ::Char, ::Vector{Expr}, ::String, ::Char, ::Int64, ::Int64)"
},
"children": [
{
"method_instance": {
"method": "show_unquoted(io::IO, ex::Expr, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1898",
"method_instance": "MethodInstance for Base.show_unquoted(::IOBuffer, ::Expr, ::Int64, ::Int64, ::Int64)"
},
"children": [
]
}
]
}
]
}
]
},
{
"method_instance": {
"method": "show_unquoted(io::IO, ex::Expr, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1898",
"method_instance": "MethodInstance for Base.show_unquoted(::IOBuffer, ::Expr, ::Int64, ::Int64, ::Int64)"
},
"children": [
]
}
]
},
{
"method_instance": {
"method": "var\"#sprint#439\"(context, sizehint::Integer, ::typeof(sprint), f::Function, args...) @ Base strings/io.jl:106",
"method_instance": "MethodInstance for Base.var\"#sprint#439\"(::Nothing, ::Int64, ::typeof(sprint), ::typeof(show), ::Symbol)"
},
"children": [
]
},
{
"method_instance": {
"method": "var\"#sprint#439\"(context, sizehint::Integer, ::typeof(sprint), f::Function, args...) @ Base strings/io.jl:106",
"method_instance": "MethodInstance for Base.var\"#sprint#439\"(::Nothing, ::Int64, ::typeof(sprint), ::typeof(show), ::Symbol)"
},
"children": [
{
"method_instance": {
"method": "kwcall(::NamedTuple, ::typeof(sprint), f::Function, args...) @ Base strings/io.jl:106",
"method_instance": "MethodInstance for Core.kwcall(::@NamedTuple{context::Nothing}, ::typeof(sprint), ::typeof(show), ::Symbol)"
},
"children": [
{
"method_instance": {
"method": "var\"#repr#442\"(context, ::typeof(repr), x) @ Base strings/io.jl:282",
"method_instance": "MethodInstance for Base.var\"#repr#442\"(::Nothing, ::typeof(repr), ::Symbol)"
},
"children": [
{
"method_instance": {
"method": "repr(x; context) @ Base strings/io.jl:282",
"method_instance": "MethodInstance for repr(::Symbol)"
},
"children": [
{
"method_instance": {
"method": "(::Base.Compiler.IRShow.var\"#validate_debuginfo_mode##0#validate_debuginfo_mode##1\")(mode) @ Base.Compiler.IRShow none:0",
"method_instance": "MethodInstance for (::Base.Compiler.IRShow.var\"#validate_debuginfo_mode##0#validate_debuginfo_mode##1\")(::Symbol)"
},
"children": [
{
"method_instance": {
"method": "iterate(g::Base.Generator, s...) @ Base generator.jl:43",
"method_instance": "MethodInstance for iterate(::Base.Generator{Vector{Symbol}, Base.Compiler.IRShow.var\"#validate_debuginfo_mode##0#validate_debuginfo_mode##1\"})"
},
"children": [
{
"method_instance": {
"method": "_iterator_upper_bound(itr) @ Base array.jl:768",
"method_instance": "MethodInstance for Base._iterator_upper_bound(::Base.Generator{Vector{Symbol}, Base.Compiler.IRShow.var\"#validate_debuginfo_mode##0#validate_debuginfo_mode##1\"})"
},
"children": [
{
"method_instance": {
"method": "collect(itr::Base.Generator) @ Base array.jl:796",
"method_instance": "MethodInstance for collect(::Base.Generator{Vector{Symbol}, Base.Compiler.IRShow.var\"#validate_debuginfo_mode##0#validate_debuginfo_mode##1\"})"
},
"children": [
{
"method_instance": {
"method": "validate_debuginfo_mode(mode::Symbol) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:1191",
"method_instance": "MethodInstance for Base.Compiler.IRShow.validate_debuginfo_mode(::Symbol)"
},
"children": [
{
"method_instance": {
"method": "expand_debuginfo_mode(mode::Symbol, default) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:1197",
"method_instance": "MethodInstance for Base.Compiler.IRShow.expand_debuginfo_mode(::Symbol, ::Symbol)"
},
"children": [
{
"method_instance": {
"method": "expand_debuginfo_mode(mode::Symbol) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:1197",
"method_instance": "MethodInstance for Base.Compiler.IRShow.expand_debuginfo_mode(::Symbol)"
},
"children": [
{
"method_instance": {
"method": "get_debuginfo_printer(mode::Symbol) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:1205",
"method_instance": "MethodInstance for Base.Compiler.IRShow.get_debuginfo_printer(::Symbol)"
},
"children": [
{
"method_instance": {
"method": "get_debuginfo_printer(src, mode::Symbol) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:1210",
"method_instance": "MethodInstance for Base.Compiler.IRShow.get_debuginfo_printer(::Compiler.IRCode, ::Symbol)"
},
"children": [
{
"method_instance": {
"method": "var\"#default_config#26\"(debuginfo, ::typeof(Base.Compiler.IRShow.default_config), code::Compiler.IRCode) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:925",
"method_instance": "MethodInstance for Base.Compiler.IRShow.var\"#default_config#26\"(::Any, ::typeof(Base.Compiler.IRShow.default_config), ::Compiler.IRCode)"
},
"children": [
{
"method_instance": {
"method": "kwcall(::NamedTuple, ::typeof(Base.Compiler.IRShow.default_config), code::Compiler.IRCode) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:925",
"method_instance": "MethodInstance for Core.kwcall(::NamedTuple, ::typeof(Base.Compiler.IRShow.default_config), ::Compiler.IRCode)"
},
"children": [
]
},
{
"method_instance": {
"method": "kwcall(::NamedTuple, ::typeof(Base.Compiler.IRShow.default_config), code::Compiler.IRCode) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:925",
"method_instance": "MethodInstance for Core.kwcall(::NamedTuple{(:debuginfo,), <:Tuple{Any}}, ::typeof(Base.Compiler.IRShow.default_config), ::Compiler.IRCode)"
},
"children": [
{
"method_instance": {
"method": "default_config(io::IO, src) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:929",
"method_instance": "MethodInstance for Base.Compiler.IRShow.default_config(::IO, ::Any)"
},
"children": [
]
},
{
"method_instance": {
"method": "default_config(io::IO, src) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:929",
"method_instance": "MethodInstance for Base.Compiler.IRShow.default_config(::IO, ::Compiler.IRCode)"
},
"children": [
{
"method_instance": {
"method": "kwcall(::NamedTuple, ::typeof(Base.Compiler.IRShow.show_ir), io::IO, ir::Compiler.IRCode) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:953",
"method_instance": "MethodInstance for Core.kwcall(::NamedTuple, ::typeof(Base.Compiler.IRShow.show_ir), ::IO, ::Compiler.IRCode)"
},
"children": [
]
},
{
"method_instance": {
"method": "show_ir(io::IO, compact::Compiler.IncrementalCompact) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:977",
"method_instance": "MethodInstance for Base.Compiler.IRShow.show_ir(::IO, ::Compiler.IncrementalCompact)"
},
"children": [
]
},
{
"method_instance": {
"method": "show_ir(io::IO, ir::Compiler.IRCode; ...) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:953",
"method_instance": "MethodInstance for Base.Compiler.IRShow.show_ir(::IO, ::Compiler.IRCode)"
},
"children": [
]
}
]
}
]
}
]
},
{
"method_instance": {
"method": "var\"#default_config#26\"(debuginfo, ::typeof(Base.Compiler.IRShow.default_config), code::Compiler.IRCode) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:925",
"method_instance": "MethodInstance for Base.Compiler.IRShow.var\"#default_config#26\"(::Symbol, ::typeof(Base.Compiler.IRShow.default_config), ::Compiler.IRCode)"
},
"children": [
{
"method_instance": {
"method": "default_config(code::Compiler.IRCode; debuginfo) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:925",
"method_instance": "MethodInstance for Base.Compiler.IRShow.default_config(::Compiler.IRCode)"
},
"children": [
{
"method_instance": {
"method": "default_config(io::IO, src) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:929",
"method_instance": "MethodInstance for Base.Compiler.IRShow.default_config(::IO, ::Any)"
},
"children": [
]
},
{
"method_instance": {
"method": "default_config(io::IO, src) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:929",
"method_instance": "MethodInstance for Base.Compiler.IRShow.default_config(::IO, ::Compiler.IRCode)"
},
"children": [
]
}
]
}
]
}
]
},
{
"method_instance": {
"method": "get_debuginfo_printer(src, mode::Symbol) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:1210",
"method_instance": "MethodInstance for Base.Compiler.IRShow.get_debuginfo_printer(::Core.CodeInfo, ::Symbol)"
},
"children": [
{
"method_instance": {
"method": "var\"#default_config#27\"(debuginfo, ::typeof(Base.Compiler.IRShow.default_config), code::Core.CodeInfo) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:928",
"method_instance": "MethodInstance for Base.Compiler.IRShow.var\"#default_config#27\"(::Any, ::typeof(Base.Compiler.IRShow.default_config), ::Core.CodeInfo)"
},
"children": [
{
"method_instance": {
"method": "kwcall(::NamedTuple, ::typeof(Base.Compiler.IRShow.default_config), code::Core.CodeInfo) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:928",
"method_instance": "MethodInstance for Core.kwcall(::NamedTuple, ::typeof(Base.Compiler.IRShow.default_config), ::Core.CodeInfo)"
},
"children": [
]
},
{
"method_instance": {
"method": "kwcall(::NamedTuple, ::typeof(Base.Compiler.IRShow.default_config), code::Core.CodeInfo) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:928",
"method_instance": "MethodInstance for Core.kwcall(::NamedTuple{(:debuginfo,), <:Tuple{Any}}, ::typeof(Base.Compiler.IRShow.default_config), ::Core.CodeInfo)"
},
"children": [
{
"method_instance": {
"method": "default_config(io::IO, src) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:929",
"method_instance": "MethodInstance for Base.Compiler.IRShow.default_config(::IO, ::Any)"
},
"children": [
{
"method_instance": {
"method": "kwcall(::NamedTuple, ::typeof(Base.Compiler.IRShow.show_ir), io::IO, ci::Core.CodeInfo) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:963",
"method_instance": "MethodInstance for Core.kwcall(::NamedTuple, ::typeof(Base.Compiler.IRShow.show_ir), ::IO, ::Core.CodeInfo)"
},
"children": [
]
},
{
"method_instance": {
"method": "kwcall(::NamedTuple, ::typeof(Base.Compiler.IRShow.show_ir), io::IO, ir::Compiler.IRCode) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:953",
"method_instance": "MethodInstance for Core.kwcall(::NamedTuple, ::typeof(Base.Compiler.IRShow.show_ir), ::IO, ::Compiler.IRCode)"
},
"children": [
]
},
{
"method_instance": {
"method": "show_ir(io::IO, ci::Core.CodeInfo; ...) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:963",
"method_instance": "MethodInstance for Base.Compiler.IRShow.show_ir(::IO, ::Core.CodeInfo)"
},
"children": [
]
},
{
"method_instance": {
"method": "show_ir(io::IO, compact::Compiler.IncrementalCompact) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:977",
"method_instance": "MethodInstance for Base.Compiler.IRShow.show_ir(::IO, ::Compiler.IncrementalCompact)"
},
"children": [
{
"method_instance": {
"method": "show(io::IO, code::Union{Compiler.IRCode, Compiler.IncrementalCompact}) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:360",
"method_instance": "MethodInstance for show(::IO, ::Union{Compiler.IRCode, Compiler.IncrementalCompact})"
},
"children": [
]
}
]
},
{
"method_instance": {
"method": "show_ir(io::IO, ir::Compiler.IRCode; ...) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:953",
"method_instance": "MethodInstance for Base.Compiler.IRShow.show_ir(::IO, ::Compiler.IRCode)"
},
"children": [
{
"method_instance": {
"method": "show(io::IO, code::Union{Compiler.IRCode, Compiler.IncrementalCompact}) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:360",
"method_instance": "MethodInstance for show(::IO, ::Union{Compiler.IRCode, Compiler.IncrementalCompact})"
},
"children": [
]
}
]
}
]
},
{
"method_instance": {
"method": "default_config(io::IO, src) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:929",
"method_instance": "MethodInstance for Base.Compiler.IRShow.default_config(::IO, ::Core.CodeInfo)"
},
"children": [
{
"method_instance": {
"method": "kwcall(::NamedTuple, ::typeof(Base.Compiler.IRShow.show_ir), io::IO, ci::Core.CodeInfo) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:963",
"method_instance": "MethodInstance for Core.kwcall(::NamedTuple, ::typeof(Base.Compiler.IRShow.show_ir), ::IO, ::Core.CodeInfo)"
},
"children": [
]
},
{
"method_instance": {
"method": "show_ir(io::IO, ci::Core.CodeInfo; ...) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:963",
"method_instance": "MethodInstance for Base.Compiler.IRShow.show_ir(::IO, ::Core.CodeInfo)"
},
"children": [
]
}
]
}
]
}
]
},
{
"method_instance": {
"method": "var\"#default_config#27\"(debuginfo, ::typeof(Base.Compiler.IRShow.default_config), code::Core.CodeInfo) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:928",
"method_instance": "MethodInstance for Base.Compiler.IRShow.var\"#default_config#27\"(::Symbol, ::typeof(Base.Compiler.IRShow.default_config), ::Core.CodeInfo)"
},
"children": [
{
"method_instance": {
"method": "default_config(code::Core.CodeInfo; debuginfo) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:928",
"method_instance": "MethodInstance for Base.Compiler.IRShow.default_config(::Core.CodeInfo)"
},
"children": [
{
"method_instance": {
"method": "default_config(io::IO, src) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:929",
"method_instance": "MethodInstance for Base.Compiler.IRShow.default_config(::IO, ::Any)"
},
"children": [
]
},
{
"method_instance": {
"method": "default_config(io::IO, src) @ Base.Compiler.IRShow ../usr/share/julia/Compiler/src/ssair/show.jl:929",
"method_instance": "MethodInstance for Base.Compiler.IRShow.default_config(::IO, ::Core.CodeInfo)"
},
"children": [
]
}
]
}
]
}
]
}
]
}
]
}
]
}
]
}
]
}
]
},
{
"method_instance": {
"method": "collect(itr::Base.Generator) @ Base array.jl:796",
"method_instance": "MethodInstance for collect(::Base.Generator{Vector{Symbol}, Base.Compiler.IRShow.var\"#validate_debuginfo_mode##0#validate_debuginfo_mode##1\"})"
},
"children": [
]
}
]
},
{
"method_instance": {
"method": "iterate(g::Base.Generator, s...) @ Base generator.jl:43",
"method_instance": "MethodInstance for iterate(::Base.Generator{Vector{Symbol}, Base.Compiler.IRShow.var\"#validate_debuginfo_mode##0#validate_debuginfo_mode##1\"}, ::Int64)"
},
"children": [
{
"method_instance": {
"method": "_iterator_upper_bound(itr) @ Base array.jl:768",
"method_instance": "MethodInstance for Base._iterator_upper_bound(::Base.Generator{Vector{Symbol}, Base.Compiler.IRShow.var\"#validate_debuginfo_mode##0#validate_debuginfo_mode##1\"})"
},
"children": [
]
},
{
"method_instance": {
"method": "collect_to!(dest::AbstractArray{T}, itr, offs, st) where T @ Base array.jl:856",
"method_instance": "MethodInstance for Base.collect_to!(::Vector{String}, ::Base.Generator{Vector{Symbol}, Base.Compiler.IRShow.var\"#validate_debuginfo_mode##0#validate_debuginfo_mode##1\"}, ::Int64, ::Int64)"
},
"children": [
{
"method_instance": {
"method": "collect_to_with_first!(dest::AbstractArray, v1, itr, st) @ Base array.jl:836",
"method_instance": "MethodInstance for Base.collect_to_with_first!(::Vector{String}, ::String, ::Base.Generator{Vector{Symbol}, Base.Compiler.IRShow.var\"#validate_debuginfo_mode##0#validate_debuginfo_mode##1\"}, ::Int64)"
},
"children": [
{
"method_instance": {
"method": "collect(itr::Base.Generator) @ Base array.jl:796",
"method_instance": "MethodInstance for collect(::Base.Generator{Vector{Symbol}, Base.Compiler.IRShow.var\"#validate_debuginfo_mode##0#validate_debuginfo_mode##1\"})"
},
"children": [
]
}
]
}
]
}
]
}
]
}
]
}
]
}
]
}
]
}
]
}
]
}
]
}
]
},
{
"method_instance": {
"method": "show_block(io::IO, head, args::Vector, body, indent::Int64, quote_level::Int64) @ Base show.jl:1625",
"method_instance": "MethodInstance for Base.show_block(::IOContext{IOBuffer}, ::Symbol, ::Vector, ::Expr, ::Int64, ::Int64)"
},
"children": [
{
"method_instance": {
"method": "show_unquoted(io::IO, ex::Expr, indent::Int64, prec::Int64, quote_level::Int64) @ Base show.jl:1898",
"method_instance": "MethodInstance for Base.show_unquoted(::IOBuffer, ::Expr, ::Int64, ::Int64, ::Int64)"
},
"children": [
]
}
]
}
]
}
]
}
]
},
{
"method_instance": {
"method": "show_list(io::IO, items, sep, indent::Int64, prec::Int64, quote_level::Int64, enclose_operators::Bool, kw::Bool) @ Base show.jl:1654",
"method_instance": "MethodInstance for Base.show_list(::IOContext{IOBuffer}, ::Array, ::String, ::Int64, ::Int64, ::Int64, ::Bool, ::Bool)"
},
"children": [
]
}
]
}
]
}The above tree of method instances gets invalidated on struct I <: Integer end
function Base.one(::I) end |
that is not really legal code though, right? unless
fair enough. also it's probably a decent job for an LLM later ("search my codebase for typeasserts, try to remove them and run inference to see if they're necessary") |
You're right, the method body is not a correct implementation of the interface of |
The method return type is known concretely as
OneTo{Int}, however the compiler can't tell because there are too many methods matchinglength(::Array), over the world-splitting threshold,max_methods.Cross-reference WIP PR #57627, which might help here in another way by decreasing the number of unnecessary methods, however merging that PR would also cause regressions if world-splitting is not disabled first for
length(xref WIP PR #59377).Fix that by asserting the return type of the
lengthcall asInt.The
typeassertshould improve abstract return type inference, and consequently make the sysimage more resistant to invalidation.