Like docs_for_symbol_from_index, but scoped to a class hint — see
signature_for_symbol_from_index_scoped. Also skips the PHP-builtin
fallback when a class hint is given, since a hint means the symbol is
known to be a user-defined method, not a global builtin function.
Extract the receiver variable from immediately before ->word or ?->word
at the cursor’s exact column position. Uses the column rather than
str::find() so multiple method calls on the same line are handled
correctly.
Indexed variant: uses pre-computed SymbolMaps for the cross-file
declaration lookup (path 4/5), eliminating repeated AST walks on stable
files. All other paths (named-arg hover, mir-member hover, static-prop
hover) still use other_docs since they require full AST traversal.
Build a hover for a static method call found by class short name + method name
in the workspace index. Used when the primary mir path cannot resolve a cross-file
static call (e.g. Str::camel(…) where Str is only known through a use-import).
Like resolve_use_alias, but also returns the full FQN the alias
resolves to, so callers can disambiguate between same-named classes in
different namespaces (e.g. many vendored Factory classes all locally
aliased to FactoryContract) instead of matching on the short name alone.
Like signature_for_symbol_from_index, but when class_hint is given,
only a method whose owning class matches it is considered — disambiguates
same-named methods on unrelated classes (e.g. two classes both declaring
save()) instead of returning whichever one is indexed first. A hint
also skips the free-function search entirely, since a hint means the
symbol is known to be a method.