@@ -182,12 +182,14 @@ function cthulhu_typed(io::IO, debuginfo::Symbol,
182182 callsite_diagnostics = TypedSyntax. Diagnostic[]
183183 if (diagnostics_vscode || inlay_types_vscode)
184184 vscode_io = IOContext (devnull , :inlay_hints => vscode_io[:inlay_hints ], :diagnostics => vscode_io[:diagnostics ])
185- callsite_cis = Dict () # type annotation is a bit long so I skipped it, doesn't seem to affect performance
186- visited_cis = Set {CodeInstance} ((codeinst,))
187- add_callsites! (callsite_cis, visited_cis, callsite_diagnostics, codeinst; optimize, annotate_source, interp)
188- for callsite in values (callsite_cis)
189- if ! isnothing (callsite)
190- descend_into_callsite! (vscode_io, callsite. tsn; iswarn, hide_type_stable, type_annotations)
185+ if haskey (interp. unopt, codeinst) # don't process const-proped results
186+ callsite_cis = Dict () # type annotation is a bit long so I skipped it, doesn't seem to affect performance
187+ visited_cis = Set {CodeInstance} ((codeinst,))
188+ add_callsites! (callsite_cis, visited_cis, callsite_diagnostics, codeinst; optimize, annotate_source, interp)
189+ for callsite in values (callsite_cis)
190+ if ! isnothing (callsite)
191+ descend_into_callsite! (vscode_io, callsite. tsn; iswarn, hide_type_stable, type_annotations)
192+ end
191193 end
192194 end
193195 end
@@ -358,14 +360,17 @@ function add_callsites!(d::AbstractDict, visited_cis::AbstractSet, diagnostics::
358360 end
359361
360362 for callsite in callsites
361- callsite_ci = callsite. info isa MultiCallInfo ? nothing : get_ci (callsite)
363+ info = callsite. info
364+ isa (info, MultiCallInfo) && continue
365+ isa (info, ConstPropCallInfo) && continue
366+ isa (info, SemiConcreteCallInfo) && continue
362367
363- if ! isnothing ( callsite_ci) && callsite_ci ∉ visited_cis
364- push! (visited_cis, callsite_ci)
365- # TODO : figure out why this `CodeInstance` is not present in the unoptimized cache.
366- callsite_ci . def . def . sig === Tuple{ typeof (getproperty), Module, Symbol} && continue
367- add_callsites! (d, visited_cis, diagnostics, callsite_ci, source_ci; optimize, annotate_source, interp )
368- end
368+ callsite_ci = get_ci (callsite)
369+ isnothing ( callsite_ci) && continue
370+ in (callsite_ci, visited_cis) && continue
371+
372+ push! ( visited_cis, callsite_ci)
373+ add_callsites! (d, visited_cis, diagnostics, callsite_ci, source_ci; optimize, annotate_source, interp)
369374 end
370375
371376 # Check if callsite is not just filling in default arguments and defined in same file as source_ci
0 commit comments