rikurunico
801c2a2dfd
fix(php): route ALL scoped calls through the PHP resolver, not just uppercase receivers
...
engine.py's defer guard only deferred a scoped_call_expression into raw_calls
when member_receiver[:1].isupper() (or is_this_field_call/_csharp_defer), so
self::, static::, parent::, $var::, and lowercase-first class receivers fell
through to the pre-existing per-file bare-name path instead of reaching
_resolve_php_member_calls. That path is last-write-wins across the whole file
and can mis-bind a same-named method on an unrelated class.
Tag scoped_call_expression with is_scoped_call and add it to the defer
condition unconditionally, so every `::` call is deferred to raw_calls and
resolved by the dedicated resolver regardless of receiver casing or sigil.
Also tighten the self::/static:: and $var:: fixtures with a same-named decoy
method on another class, so they actually prove enclosing-class scoping
and no-fabrication instead of passing on a bare-name coincidence.
Addresses review feedback on PR #3874 .
2026-09-28 01:28:52 +07:00
..
2026-09-21 19:19:26 +01:00
2026-09-10 23:04:40 +01:00
2026-09-05 01:18:59 +01:00
2026-09-05 01:18:59 +01:00
2026-09-12 17:36:09 +01:00
2026-09-10 23:04:40 +01:00
2026-09-12 22:23:00 +01:00
2026-09-11 22:46:15 +01:00
2026-09-22 17:30:28 +01:00
2026-09-21 19:44:17 +01:00
2026-09-12 17:36:09 +01:00
2026-09-22 15:00:07 +01:00
2026-09-22 14:58:22 +01:00
2026-09-11 22:51:35 +01:00
2026-09-05 21:55:34 +01:00
2026-09-17 11:01:38 +01:00
2026-08-29 19:32:51 +01:00
2026-09-14 18:55:31 +01:00
2026-09-25 15:44:08 +01:00
2026-09-17 11:03:41 +01:00
2026-09-13 17:47:56 +01:00
2026-09-02 14:58:01 +01:00
2026-08-24 14:12:53 +01:00
2026-09-05 01:18:59 +01:00
2026-08-25 15:45:06 +01:00
2026-09-09 11:30:27 +01:00
2026-08-24 13:22:09 +01:00
2026-08-24 14:08:25 +01:00
2026-08-24 13:17:23 +01:00
2026-09-25 16:01:47 +01:00
2026-09-07 20:21:35 +01:00
2026-09-25 16:01:47 +01:00
2026-09-26 13:53:08 +01:00
2026-09-02 03:05:59 +01:00
2026-09-26 13:53:08 +01:00
2026-08-29 18:38:33 +01:00
2026-09-05 01:18:59 +01:00
2026-09-16 15:37:30 +01:00
2026-09-21 19:19:26 +01:00
2026-09-11 23:58:31 +01:00
2026-09-23 16:54:04 +01:00
2026-09-20 18:07:23 +01:00
2026-09-16 16:20:01 +01:00
2026-08-28 01:20:57 +01:00
2026-09-23 19:45:40 +01:00
2026-09-26 13:53:08 +01:00
2026-08-27 20:20:16 +01:00
2026-09-05 21:55:33 +01:00
2026-09-10 14:03:22 +01:00
2026-08-25 18:09:25 +01:00
2026-09-22 14:58:12 +01:00
2026-09-22 14:58:12 +01:00
2026-09-02 14:49:03 +01:00
2026-08-28 01:20:27 +01:00
2026-09-06 16:17:37 +01:00
2026-08-30 15:11:40 +01:00
2026-08-30 15:11:40 +01:00
2026-09-14 18:49:21 +01:00
2026-09-05 21:55:33 +01:00
2026-09-25 16:15:15 +01:00
2026-09-20 13:59:26 +01:00
2026-09-26 13:53:08 +01:00
2026-09-05 01:18:59 +01:00
2026-08-29 16:14:47 +01:00
2026-08-30 15:11:24 +01:00
2026-08-30 15:11:40 +01:00
2026-09-22 17:30:28 +01:00
2026-09-09 17:20:54 +01:00
2026-09-10 22:44:39 +01:00
2026-09-20 13:59:25 +01:00
2026-08-29 16:14:47 +01:00
2026-09-14 18:49:19 +01:00
2026-09-12 21:31:34 +01:00
2026-09-26 13:53:08 +01:00
2026-09-13 17:47:55 +01:00
2026-09-09 11:30:28 +01:00
2026-09-17 11:09:52 +01:00
2026-09-22 17:30:28 +01:00
2026-09-22 17:30:28 +01:00
2026-09-26 13:48:37 +01:00
2026-09-10 22:44:40 +01:00
2026-09-23 17:01:39 +01:00
2026-09-13 17:47:57 +01:00
2026-09-25 16:01:47 +01:00
2026-09-05 01:19:09 +01:00
2026-09-16 14:50:54 +01:00
2026-08-25 18:09:58 +01:00
2026-09-17 11:01:37 +01:00
2026-09-10 22:44:38 +01:00
2026-08-29 16:14:29 +01:00
2026-09-26 13:45:58 +01:00
2026-09-09 17:20:57 +01:00
2026-09-05 21:13:54 +01:00
2026-09-07 19:02:18 +01:00
2026-08-25 15:44:52 +01:00
2026-09-17 11:01:38 +01:00
2026-09-27 11:26:40 +07:00
2026-09-28 01:28:52 +07:00
2026-09-09 17:20:56 +01:00
2026-09-25 15:44:21 +01:00
2026-09-05 21:55:35 +01:00
2026-09-23 17:02:17 +01:00
2026-09-11 22:46:27 +01:00
2026-09-05 21:55:32 +01:00
2026-09-07 18:42:56 +01:00
2026-09-21 19:10:13 +01:00
2026-09-05 21:13:53 +01:00
2026-09-13 17:47:54 +01:00
2026-09-21 18:04:04 +01:00
2026-09-25 15:44:21 +01:00
2026-09-12 17:36:10 +01:00
2026-09-11 22:46:36 +01:00
2026-09-16 14:43:05 +01:00
2026-09-18 15:16:09 +01:00
2026-09-13 17:47:54 +01:00
2026-09-14 18:52:06 +01:00
2026-08-29 18:38:05 +01:00
2026-09-22 17:30:28 +01:00
2026-09-25 16:01:53 +01:00
2026-09-12 21:49:56 +01:00
2026-09-21 19:13:40 +01:00
2026-09-11 22:46:36 +01:00
2026-09-13 17:47:54 +01:00
2026-09-23 17:01:39 +01:00
2026-08-28 01:18:04 +01:00
2026-09-20 13:59:25 +01:00
2026-09-15 18:01:35 +01:00
2026-09-25 15:44:21 +01:00
2026-09-12 17:39:27 +01:00
2026-09-20 18:53:35 +01:00
2026-08-30 15:48:40 +01:00
2026-08-27 20:57:16 +01:00
2026-08-29 16:16:09 +01:00
2026-08-25 15:45:33 +01:00
2026-09-06 16:17:38 +01:00
2026-08-30 15:12:10 +01:00
2026-09-21 19:06:50 +01:00
2026-09-11 22:46:26 +01:00
2026-09-22 17:30:28 +01:00
2026-08-30 15:11:23 +01:00