# Why does \`Cthulhu.@descend\` report incorrect \`Any\` inference in the call menu?

**URL:** <https://discourse.julialang.org/t/why-does-cthulhu-descend-report-incorrect-any-inference-in-the-call-menu/127400>\
**Category:** General Usage\
**Tags:** inference, cthulhu\
**Created:** [March 27, 2025, 4:33am UTC](https://discourse.julialang.org/t/why-does-cthulhu-descend-report-incorrect-any-inference-in-the-call-menu/127400 "2025-03-27T04:33:30Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Benny](https://avatars.discourse-cdn.com/v4/letter/b/49beb7/32.png) [@Benny](https://discourse.julialang.org/u/Benny)\
**Post date:** [March 27, 2025, 4:33am UTC](https://discourse.julialang.org/t/why-does-cthulhu-descend-report-incorrect-any-inference-in-the-call-menu/127400/1 "2025-03-27T04:33:30Z")

</div>

`Cthulhu.@descend` sometimes annotates return types of calls as `::Any` in the call menu, contradicting `@code_warntype`. Descending into the `::Any` calls show different return types in the annotated method body, consistent with `@code_warntype`. Is there a known explanation or an issue discussing this?

This example works on Julia v1.10.9 and v1.11.4, see %4 and %6 for `::Any`:

```julia
julia> @descend foo(zeros(2,2), rand(2,2))
foo(out, in) @ Main REPL[1]:3
3 function foo(out::Matrix{Float64}, in::Matrix{Float64})::Matrix{Float64}
4 out::Matrix{Float64}[begin]::Core.Const(1) = in::Matrix{Float64}[begin]::Core.Const(1)
5 mul!(out::Matrix{Float64}, in::Matrix{Float64}, in::Matrix{Float64})
6 out::Matrix{Float64}
7 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, [j]ump to source always.
Show: [S]ource code, [A]ST, [T]yped code, [L]LVM IR, [N]ative code
Actions: [E]dit source code, [R]evise and redisplay
 • in::Matrix{Float64}[begin]
   %2 = getindex(::Matrix{Float64},::Int64)::Float64
   out::Matrix{Float64}[begin]
   %4 = setindex!(::Matrix{Float64},::Float64,::Int64)::Any
   %6 = mul!(::Matrix{Float64},::Matrix{Float64},::Matrix{Float64})::Any
   ↩

```
