JuliaDebug / Cthulhu.jl

The slow descent into madness
MIT License
657 stars 41 forks source link

`TypeError: in typeassert, expected Vector{Any}, got a value of type Nothing` in `gettyp` #479

Open jishnub opened 1 year ago

jishnub commented 1 year ago

This seems to be https://github.com/JuliaDebug/Cthulhu.jl/issues/455 resuscitated.

Using https://github.com/jishnub/ApproxFunOrthogonalPolynomials.jl/tree/cthulhuerrorVectorAny

julia> using ApproxFunOrthogonalPolynomials

julia> f = Fun((x,y)->x*y, Ultraspherical(1) ⊗ Chebyshev())
Fun(Ultraspherical(1) ⊗ Chebyshev(), [0.0, 0.0, 0.0, 0.0, 0.5])

julia> @descend ProductFun(ProductFun(f), NormalizedUltraspherical(1) ⊗ Ultraspherical(1))
ProductFun(f::ProductFun, sp::TensorSpace) @ ApproxFunBase ~/.julia/packages/ApproxFunBase/WgPov/src/Multivariate/ProductFun.jl:183
183 ProductFun(f::ProductFun{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}, TensorSpace{Tuple{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}}, DomainSets.FixedIntervalProduct{2, Float64, ChebyshevInterval{Float64}}, Float64}, Float64}::ProductFun,sp::TensorSpace{Tuple{NormalizedUltraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}}, DomainSets.FixedIntervalProduct{2, Float64, ChebyshevInterval{Float64}}, Float64}::TensorSpace)::ProductFun{NormalizedUltraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, TensorSpace{Tuple{NormalizedUltraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}}, DomainSets.FixedIntervalProduct{2, Float64, ChebyshevInterval{Float64}}, Float64}, Float64}=space(f::ProductFun{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}, TensorSpace{Tuple{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}}, DomainSets.FixedIntervalProduct{2, Float64, ChebyshevInterval{Float64}}, Float64}, Float64})::TensorSpace{Tuple{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}}, DomainSets.FixedIntervalProduct{2, Float64, ChebyshevInterval{Float64}}, Float64}==sp::TensorSpace{Tuple{NormalizedUltraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}}, DomainSets.FixedIntervalProduct{2, Float64, ChebyshevInterval{Float64}}, Float64} ? f : ProductFun::Type{ProductFun}(coefficients(f::ProductFun{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}, TensorSpace{Tuple{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}}, DomainSets.FixedIntervalProduct{2, Float64, ChebyshevInterval{Float64}}, Float64}, Float64},sp::TensorSpace{Tuple{NormalizedUltraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}}, DomainSets.FixedIntervalProduct{2, Float64, ChebyshevInterval{Float64}}, Float64})::Matrix{Float64},sp::TensorSpace{Tuple{NormalizedUltraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}}, DomainSets.FixedIntervalProduct{2, Float64, ChebyshevInterval{Float64}}, Float64})::ProductFun{NormalizedUltraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, TensorSpace{Tuple{NormalizedUltraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}}, DomainSets.FixedIntervalProduct{2, Float64, ChebyshevInterval{Float64}}, Float64}, Float64}
Select a call to descend into or ↩ to ascend. [q]uit. [b]ookmark.
Toggles: [w]arn, [h]ide type-stable statements, [t]ype annotations, [s]yntax highlight for Source/LLVM/Native.
Show: [S]ource code, [A]ST, [T]yped code, [L]LVM IR, [N]ative code
Actions: [E]dit source code, [R]evise and redisplay
   space(f::ProductFun{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}, TensorSpace{Tuple{Ultr…
   %2 = ==(::TensorSpace{…},::TensorSpace{…})::Core.Const(false)
 • coefficients(f::ProductFun{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}, TensorSpace{Tup…
   ProductFun::Type{ProductFun}(coefficients(f::ProductFun{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float6…
   ↩
coefficients(f::ProductFun, ox::TensorSpace) @ ApproxFunBase ~/.julia/packages/ApproxFunBase/WgPov/src/Multivariate/ProductFun.jl:279
279 coefficients(f::ProductFun{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}, TensorSpace{Tuple{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}}, DomainSets.FixedIntervalProduct{2, Float64, ChebyshevInterval{Float64}}, Float64}, Float64}::ProductFun, ox::TensorSpace{Tuple{NormalizedUltraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}}, DomainSets.FixedIntervalProduct{2, Float64, ChebyshevInterval{Float64}}, Float64}::TensorSpace)::Matrix{Float64} = coefficients(f::ProductFun{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}, TensorSpace{Tuple{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}}, DomainSets.FixedIntervalProduct{2, Float64, ChebyshevInterval{Float64}}, Float64}, Float64}, factors(ox::TensorSpace{Tuple{NormalizedUltraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}}, DomainSets.FixedIntervalProduct{2, Float64, ChebyshevInterval{Float64}}, Float64})::Tuple{NormalizedUltraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}}...)
Select a call to descend into or ↩ to ascend. [q]uit. [b]ookmark.
Toggles: [w]arn, [h]ide type-stable statements, [t]ype annotations, [s]yntax highlight for Source/LLVM/Native.
Show: [S]ource code, [A]ST, [T]yped code, [L]LVM IR, [N]ative code
Actions: [E]dit source code, [R]evise and redisplay
   factors(ox::TensorSpace{Tuple{NormalizedUltraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Ultraspherical{Int64, ChebyshevInterval{Float64}, …
 • coefficients(f::ProductFun{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}, TensorSpace{Tup…
   ↩
coefficients(f::ProductFun, ox::Space, oy::Space) @ ApproxFunBase ~/.julia/packages/ApproxFunBase/WgPov/src/Multivariate/ProductFun.jl:247
247 function coefficients(f::ProductFun{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}, TensorSpace{Tuple{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}}, DomainSets.FixedIntervalProduct{2, Float64, ChebyshevInterval{Float64}}, Float64}, Float64}::ProductFun, ox::NormalizedUltraspherical{Int64, ChebyshevInterval{Float64}, Float64}::Space, oy::Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}::Space)::Matrix{Float64}
248     T::Core.Const(Float64)=cfstype(f::ProductFun{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}, TensorSpace{Tuple{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}}, DomainSets.FixedIntervalProduct{2, Float64, ChebyshevInterval{Float64}}, Float64}, Float64})::Type{Float64}
249     m::Int64=size(f::ProductFun{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}, TensorSpace{Tuple{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}}, DomainSets.FixedIntervalProduct{2, Float64, ChebyshevInterval{Float64}}, Float64}, Float64},1)::Int64
250     B::Matrix{Float64} = zeros(T::Type{Float64}, m::Int64, length(f::ProductFun{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}, TensorSpace{Tuple{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}}, DomainSets.FixedIntervalProduct{2, Float64, ChebyshevInterval{Float64}}, Float64}, Float64}.coefficients::Vector{Fun{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Float64, Vector{Float64}}})::Int64)::Matrix{Float64}
251     # convert in x direction
252     #TODO: adaptively grow in x?
253     for k::Int64=(1:length(f::ProductFun{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}, TensorSpace{Tuple{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}}, DomainSets.FixedIntervalProduct{2, Float64, ChebyshevInterval{Float64}}, Float64}, Float64}.coefficients::Vector{Fun{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Float64, Vector{Float64}}})::Int64)::Int64::Union{Nothing, Tuple{Int64, Int64}}
254         B::Matrix{Float64}[:,k::Int64] = pad(coefficients(f::ProductFun{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}, TensorSpace{Tuple{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}}, DomainSets.FixedIntervalProduct{2, Float64, ChebyshevInterval{Float64}}, Float64}, Float64}.coefficients::Vector{Fun{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Float64, Vector{Float64}}}[k::Int64]::Fun{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Float64, Vector{Float64}},ox::NormalizedUltraspherical{Int64, ChebyshevInterval{Float64}, Float64})::Vector{Float64}, m::Int64)::Vector{Float64}
255     end
256 
257     sp::TensorSpace{Tuple{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}}, DomainSets.FixedIntervalProduct{2, Float64, ChebyshevInterval{Float64}}, Float64} = space(f::ProductFun{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}, TensorSpace{Tuple{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}}, DomainSets.FixedIntervalProduct{2, Float64, ChebyshevInterval{Float64}}, Float64}, Float64})::TensorSpace{Tuple{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}}, DomainSets.FixedIntervalProduct{2, Float64, ChebyshevInterval{Float64}}, Float64}
258     spf2::Core.Const(Chebyshev()) = factor(sp::TensorSpace{Tuple{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}}, DomainSets.FixedIntervalProduct{2, Float64, ChebyshevInterval{Float64}}, Float64}, 2)::Chebyshev{ChebyshevInterval{Float64}, Float64}
259 
260     # convert in y direction
261     for k=(1:size(B::Matrix{Float64},1)::Int64)::UnitRange{Int64}::Union{Nothing, Tuple{Int64, Int64}}
262         ccfs::Any=coefficients(view(B::Matrix{Float64},k::Int64,:)::SubArray{Float64, 1, Matrix{Float64}, Tuple{Int64, Base.Slice{Base.OneTo{Int64}}}, true}, spf2::Chebyshev{ChebyshevInterval{Float64}, Float64}, oy::Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64})::Any
263         if (length(ccfs::Any)::Any>size(B::Matrix{Float64},2)::Int64)::Any
264             B::Matrix{Float64}=pad(B,size(B::Matrix{Float64},1)::Int64,length(ccfs::Any)::Any)::Matrix{Float64}
265         end
266         B::Matrix{Float64}[k::Int64,(1:length(ccfs::Any)::Any)::Any]=ccfs
267         for j::Any=((length(ccfs::Any)::Any+1)::Any:size(B::Matrix{Float64},2)::Any)::Any::Any
268             B::Matrix{Float64}[k::Int64,j::Any]=zero(T::Type{Float64})::Float64
269         end
270     end
271 
272     B::Matrix{Float64}
273 end
Select a call to descend into or ↩ to ascend. [q]uit. [b]ookmark.
Toggles: [w]arn, [h]ide type-stable statements, [t]ype annotations, [s]yntax highlight for Source/LLVM/Native.
Show: [S]ource code, [A]ST, [T]yped code, [L]LVM IR, [N]ative code
Actions: [E]dit source code, [R]evise and redisplay
^  %26 =  = < semi-concrete eval > iterate(::Core.PartialStruct(UnitRange{Int64}, Any[Core.Const(1), Int64]),::Int64)::Union{Nothing, Tuple{Int64, Int64}}
   space(f::ProductFun{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}, TensorSpace{Tuple{Ultr…
   factor(sp::TensorSpace{Tuple{Ultraspherical{Int64, ChebyshevInterval{Float64}, Float64}, Chebyshev{ChebyshevInterval{Float64}, Float64}}, DomainSets.F…
   size(B::Matrix{Float64},1)
   1:size(B::Matrix{Float64},1)::Int64
    k=(1:size(B::Matrix{Float64},1)::Int64)::UnitRange{Int64}
   view(B::Matrix{Float64},k::Int64,:)
 • coefficients(view(B::Matrix{Float64},k::Int64,:)::SubArray{Float64, 1, Matrix{Float64}, Tuple{Int64, Base.Slice{Base.OneTo{Int64}}}, true}, spf2::Cheb…
   runtime length(ccfs::Any)
v  size(B::Matrix{Float64},2)
ERROR: TypeError: in typeassert, expected Vector{Any}, got a value of type Nothing
Stacktrace:
  [1] gettyp
    @ ~/.julia/packages/TypedSyntax/vbZHi/src/node.jl:279 [inlined]
  [2] addchildren!(tparent::JuliaSyntax.TreeNode{TypedSyntax.TypedSyntaxData}, parent::JuliaSyntax.SyntaxNode, src::Core.CodeInfo, node2ssa::IdDict{JuliaSyntax.SyntaxNode, Int64}, symtyps::IdDict{JuliaSyntax.SyntaxNode, Any}, mappings::Vector{Vector{Union{JuliaSyntax.TreeNode{TypedSyntax.TypedSyntaxData}, JuliaSyntax.SyntaxNode}}})
    @ TypedSyntax ~/.julia/packages/TypedSyntax/vbZHi/src/node.jl:85
  [3] addchildren!(tparent::JuliaSyntax.TreeNode{TypedSyntax.TypedSyntaxData}, parent::JuliaSyntax.SyntaxNode, src::Core.CodeInfo, node2ssa::IdDict{JuliaSyntax.SyntaxNode, Int64}, symtyps::IdDict{JuliaSyntax.SyntaxNode, Any}, mappings::Vector{Vector{Union{JuliaSyntax.TreeNode{TypedSyntax.TypedSyntaxData}, JuliaSyntax.SyntaxNode}}}) (repeats 3 times)
    @ TypedSyntax ~/.julia/packages/TypedSyntax/vbZHi/src/node.jl:90
  [4] JuliaSyntax.TreeNode{TypedSyntax.TypedSyntaxData}(rootnode::JuliaSyntax.SyntaxNode, src::Core.CodeInfo, mappings::Vector{Vector{Union{JuliaSyntax.TreeNode{TypedSyntax.TypedSyntaxData}, JuliaSyntax.SyntaxNode}}}, symtyps::IdDict{JuliaSyntax.SyntaxNode, Any})
    @ TypedSyntax ~/.julia/packages/TypedSyntax/vbZHi/src/node.jl:69
  [5] tsn_and_mappings(m::Method, src::Core.CodeInfo, rt::Any, sourcetext::SubString{String}, lineno::Int64; warn::Bool, strip_macros::Bool, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ TypedSyntax ~/.julia/packages/TypedSyntax/vbZHi/src/node.jl:48
  [6] tsn_and_mappings(m::Method, src::Core.CodeInfo, rt::Any; warn::Bool, strip_macros::Bool, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ TypedSyntax ~/.julia/packages/TypedSyntax/vbZHi/src/node.jl:34
  [7] tsn_and_mappings
    @ ~/.julia/packages/TypedSyntax/vbZHi/src/node.jl:28 [inlined]
  [8] #get_typed_sourcetext#32
    @ ~/.julia/packages/Cthulhu/4WY7j/src/reflection.jl:346 [inlined]
  [9] get_typed_sourcetext
    @ ~/.julia/packages/Cthulhu/4WY7j/src/reflection.jl:344 [inlined]
 [10] find_callsites(interp::Cthulhu.CthulhuInterpreter, CI::Core.CodeInfo, stmt_infos::Vector{Core.Compiler.CallInfo}, mi::Core.MethodInstance, slottypes::Vector{Any}, optimize::Bool, annotate_source::Bool)
    @ Cthulhu ~/.julia/packages/Cthulhu/4WY7j/src/reflection.jl:28
 [11] _descend(term::REPL.Terminals.TTYTerminal, interp::Cthulhu.CthulhuInterpreter, curs::Cthulhu.CthulhuCursor; override::Nothing, debuginfo::Cthulhu.DInfo.DebugInfo, optimize::Bool, interruptexc::Bool, iswarn::Bool, hide_type_stable::Bool, verbose::Nothing, remarks::Bool, with_effects::Bool, inline_cost::Bool, type_annotations::Bool, annotate_source::Bool)
    @ Cthulhu ~/.julia/packages/Cthulhu/4WY7j/src/Cthulhu.jl:458
 [12] _descend(term::REPL.Terminals.TTYTerminal, interp::Cthulhu.CthulhuInterpreter, curs::Cthulhu.CthulhuCursor; override::Nothing, debuginfo::Cthulhu.DInfo.DebugInfo, optimize::Bool, interruptexc::Bool, iswarn::Bool, hide_type_stable::Bool, verbose::Nothing, remarks::Bool, with_effects::Bool, inline_cost::Bool, type_annotations::Bool, annotate_source::Bool) (repeats 2 times)
    @ Cthulhu ~/.julia/packages/Cthulhu/4WY7j/src/Cthulhu.jl:591
 [13] _descend(term::REPL.Terminals.TTYTerminal, interp::Cthulhu.CthulhuInterpreter, curs::Cthulhu.CthulhuCursor; override::Nothing, debuginfo::Symbol, optimize::Bool, interruptexc::Bool, iswarn::Bool, hide_type_stable::Bool, verbose::Nothing, remarks::Bool, with_effects::Bool, inline_cost::Bool, type_annotations::Bool, annotate_source::Bool)
    @ Cthulhu ~/.julia/packages/Cthulhu/4WY7j/src/Cthulhu.jl:591
 [14] _descend(term::REPL.Terminals.TTYTerminal, interp::Cthulhu.CthulhuInterpreter, mi::Core.MethodInstance; kwargs::Base.Pairs{Symbol, Bool, Tuple{Symbol}, NamedTuple{(:iswarn,), Tuple{Bool}}})
    @ Cthulhu ~/.julia/packages/Cthulhu/4WY7j/src/Cthulhu.jl:724
 [15] _descend(::REPL.Terminals.TTYTerminal, ::Any, ::Vararg{Any}; interp::Core.Compiler.NativeInterpreter, kwargs::Base.Pairs{Symbol, Bool, Tuple{Symbol}, NamedTuple{(:iswarn,), Tuple{Bool}}})
    @ Cthulhu ~/.julia/packages/Cthulhu/4WY7j/src/Cthulhu.jl:740
 [16] __descend_with_error_handling(args::Any; terminal::Any, kwargs::Base.Pairs{Symbol, V, Tuple{Vararg{Symbol, N}}, NamedTuple{names, T}} where {V, N, names, T<:Tuple{Vararg{Any, N}}})
    @ Cthulhu ~/.julia/packages/Cthulhu/4WY7j/src/Cthulhu.jl:207
 [17] _descend_with_error_handling(f::Any, argtypes::Any; kwargs::Base.Pairs{Symbol, Bool, Tuple{Symbol}, NamedTuple{(:iswarn,), Tuple{Bool}}})
    @ Cthulhu ~/.julia/packages/Cthulhu/4WY7j/src/Cthulhu.jl:196
 [18] descend_code_typed(::Any, ::Vararg{Any}; kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ Cthulhu ~/.julia/packages/Cthulhu/4WY7j/src/Cthulhu.jl:154
 [19] descend_code_typed(::Any, ::Any)
    @ Cthulhu ~/.julia/packages/Cthulhu/4WY7j/src/Cthulhu.jl:154
 [20] top-level scope
    @ REPL[4]:1

(@v1.9) pkg> st -m Cthulhu
Status `~/.julia/environments/v1.9/Manifest.toml`
  [f68482b8] Cthulhu v2.9.2

julia> VERSION
v"1.9.2"