Skip to content

SymbolResolver::resolveCallable answers every callable-shaped node by delegating to ExpressionResolver - #477

Merged
Firehed merged 5 commits into
mainfrom
step/23
Sep 1, 2026
Merged

SymbolResolver::resolveCallable answers every callable-shaped node by delegating to ExpressionResolver#477
Firehed merged 5 commits into
mainfrom
step/23

Conversation

@Firehed

@Firehed Firehed commented Aug 31, 2026

Copy link
Copy Markdown
Owner

Done

  • resolveCallable has no match/switch/instanceof on the call-node kind and no direct MemberResolver::findMethod call - src/Resolution/SymbolResolver.php
  • Hover on an instance method call whose return type is static reports the receiver class, same as a static call - CallableHoverParityTest::testHoverSignatureAgreesOnStaticReturnAcrossCallableKinds
  • Parity test asserts hover-signature agreement across the callable node kinds for self/static/parent return types - CallableHoverParityTest

Callable-shaped nodes now delegate to ExpressionResolver: the four call
kinds (FuncCall, MethodCall, NullsafeMethodCall, StaticCall) go through
resolve(); New_ and Attribute go through the new resolveConstructor().
Hover on an instance method call whose return type is static now
late-binds to the receiver class, matching StaticCall. Deletes the
per-kind helpers and the now-unreferenced
MemberAccessDetector::resolveInstanceAccessClassName.
@codecov

codecov Bot commented Aug 31, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 99.40%. Comparing base (9fd52dd) to head (8e2637c).
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@             Coverage Diff              @@
##               main     #477      +/-   ##
============================================
- Coverage     99.50%   99.40%   -0.11%     
+ Complexity     1886     1875      -11     
============================================
  Files           132      132              
  Lines          4876     4838      -38     
============================================
- Hits           4852     4809      -43     
- Misses           24       29       +5     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

@Firehed
Firehed marked this pull request as ready for review September 1, 2026 00:24
@Firehed

Firehed commented Sep 1, 2026

Copy link
Copy Markdown
Owner Author

Overriding CI: net project coverage drop due to removing covered lines. Diff still 100% which is more important.

@Firehed
Firehed merged commit 80e706c into main Sep 1, 2026
8 of 9 checks passed
@Firehed
Firehed deleted the step/23 branch September 1, 2026 00:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant