Commit ad2ec8a
committed
fix: go-to-implementation with same-named interface and class
When an interface and its implementing class shared the same short
name (e.g. App\Contracts\HttpClient and App\Foo\HttpClient),
go-to-implementation returned no results or pointed to the interface
itself instead of the concrete class.
Two places in the implementation resolver compared by short name
instead of fully-qualified name, causing false matches when classes
in different namespaces shared a name:
- class_implements_or_extends excluded any candidate whose short name
matched the target, even when the FQNs differed. Now compares by
FQN only.
- locate_class_declaration looked up the class file by short name, so
it returned the first file containing that name rather than the
correct namespace. Now builds the FQN from the class's namespace
before lookup.
Closes #2791 parent 517879c commit ad2ec8a
3 files changed
Lines changed: 65 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
34 | | - | |
35 | | - | |
36 | | - | |
37 | | - | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
38 | 39 | | |
39 | 40 | | |
40 | 41 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
| 43 | + | |
43 | 44 | | |
44 | 45 | | |
45 | 46 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
994 | 994 | | |
995 | 995 | | |
996 | 996 | | |
997 | | - | |
998 | | - | |
| 997 | + | |
| 998 | + | |
| 999 | + | |
| 1000 | + | |
999 | 1001 | | |
1000 | 1002 | | |
1001 | 1003 | | |
| |||
1231 | 1233 | | |
1232 | 1234 | | |
1233 | 1235 | | |
| 1236 | + | |
1234 | 1237 | | |
1235 | | - | |
| 1238 | + | |
1236 | 1239 | | |
1237 | 1240 | | |
1238 | 1241 | | |
| |||
1399 | 1402 | | |
1400 | 1403 | | |
1401 | 1404 | | |
| 1405 | + | |
| 1406 | + | |
| 1407 | + | |
| 1408 | + | |
| 1409 | + | |
| 1410 | + | |
| 1411 | + | |
| 1412 | + | |
| 1413 | + | |
| 1414 | + | |
| 1415 | + | |
| 1416 | + | |
| 1417 | + | |
| 1418 | + | |
| 1419 | + | |
| 1420 | + | |
| 1421 | + | |
| 1422 | + | |
| 1423 | + | |
| 1424 | + | |
| 1425 | + | |
| 1426 | + | |
| 1427 | + | |
| 1428 | + | |
| 1429 | + | |
| 1430 | + | |
| 1431 | + | |
| 1432 | + | |
| 1433 | + | |
| 1434 | + | |
| 1435 | + | |
| 1436 | + | |
| 1437 | + | |
| 1438 | + | |
| 1439 | + | |
| 1440 | + | |
| 1441 | + | |
| 1442 | + | |
| 1443 | + | |
| 1444 | + | |
| 1445 | + | |
| 1446 | + | |
| 1447 | + | |
| 1448 | + | |
| 1449 | + | |
| 1450 | + | |
| 1451 | + | |
| 1452 | + | |
| 1453 | + | |
| 1454 | + | |
| 1455 | + | |
| 1456 | + | |
| 1457 | + | |
1402 | 1458 | | |
0 commit comments