agra
a923b6f6f0
ffi fix: route foreign-class UFCS arg target_types through extends chain
...
For UFCS dispatch on foreign-class receivers (`#foreign #objc_class`
aliases), `resolveCallParamTypes` was returning an empty slice — both
`resolveFuncByName(qualified)` and `fn_ast_map.get(qualified)` miss
for `#foreign` methods (they live in `foreign_class_map`, not the
regular fn maps). With `param_types` empty, the per-arg `target_type`
assignment in `lowerCall` was skipped, leaving `self.target_type` as
whatever it held on entry — usually the enclosing function's return
type. Inside a `-> BOOL` method, `xx ptr` then lowered with target
type `i8`: `ptrtoint ptr to i64` → `trunc i64 to i8`, sending the low
byte of the pointer through.
Symptom: chess on iOS-sim crashed in
`-[NSNotificationCenter addObserver:selector:name:object:]` with
`observer = 0xC0` (low byte of the SxAppDelegate receiver) when the
AppDelegate method's first param was renamed to anything other than
`self`. The original session diagnosed it as a `self`-vs-`this`
hardcoding in `lower.zig`, but those hardcoded `"self"` strings are
all on compiler-synthesized parameters (init scopes, JNI stubs,
property IMPs, dealloc IMPs) — not the user-facing #objc_class body
params. The bug was in arg-type resolution.
Fix walks `foreign_class_map` + `findForeignMethodInChain` to recover
the declared param types (skipping the implicit `*Self` for instance
methods). Regression test `examples/issue-0044.sx` exercises the
BOOL-return + foreign-class arg shape; pre-fix the receiver round-trip
prints WRONG, post-fix it prints ok.
2026-05-26 16:42:21 +03:00
..
2026-05-24 22:59:20 +03:00
2026-05-24 22:59:20 +03:00
2026-03-06 10:46:28 +02:00
2026-02-09 18:07:41 +02:00
2026-02-09 18:07:41 +02:00
2026-02-14 13:17:22 +02:00
2026-02-09 18:07:41 +02:00
2026-02-09 18:07:41 +02:00
2026-02-09 18:07:41 +02:00
2026-02-09 18:07:41 +02:00
2026-02-09 18:07:41 +02:00
2026-02-24 15:10:02 +02:00
2026-05-24 22:59:20 +03:00
2026-02-24 17:37:52 +02:00
2026-02-24 15:10:02 +02:00
2026-02-11 14:22:25 +02:00
2026-02-09 18:07:41 +02:00
2026-02-24 17:37:52 +02:00
2026-02-14 13:17:22 +02:00
2026-02-09 18:07:41 +02:00
2026-02-11 13:03:04 +02:00
2026-02-17 16:57:12 +02:00
2026-02-17 16:57:12 +02:00
2026-02-14 14:52:39 +02:00
2026-02-24 17:37:52 +02:00
2026-02-16 01:13:34 +02:00
2026-02-24 06:20:38 +02:00
2026-02-11 01:05:21 +02:00
2026-02-22 22:16:30 +02:00
2026-02-11 20:41:43 +02:00
2026-02-26 02:25:02 +02:00
2026-02-12 12:27:35 +02:00
2026-02-14 13:17:22 +02:00
2026-02-14 14:52:39 +02:00
2026-05-24 22:59:20 +03:00
2026-02-22 22:16:30 +02:00
2026-02-22 17:24:04 +02:00
2026-02-22 17:24:04 +02:00
2026-02-22 17:24:04 +02:00
2026-02-24 17:37:52 +02:00
2026-02-25 15:51:22 +02:00
2026-03-02 21:00:55 +02:00
2026-05-25 15:33:28 +03:00
2026-03-04 17:12:56 +02:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-25 08:41:50 +03:00
2026-05-25 08:41:50 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 17:46:17 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-24 22:59:20 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-18 00:11:23 +03:00
2026-05-18 00:11:23 +03:00
2026-05-18 00:11:23 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-19 12:06:08 +03:00
2026-05-19 12:06:08 +03:00
2026-05-25 08:41:50 +03:00
2026-05-25 08:41:50 +03:00
2026-05-25 08:41:50 +03:00
2026-05-18 18:32:55 +03:00
2026-05-24 22:59:20 +03:00
2026-05-19 00:22:35 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 19:18:31 +03:00
2026-05-19 21:14:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-23 01:28:32 +03:00
2026-05-24 22:59:20 +03:00
2026-05-25 15:33:28 +03:00
2026-05-24 22:59:20 +03:00
2026-05-24 22:59:20 +03:00
2026-05-24 22:59:20 +03:00
2026-05-25 15:23:13 +03:00
2026-05-25 09:50:37 +03:00
2026-05-25 11:41:59 +03:00
2026-05-25 12:18:27 +03:00
2026-05-25 15:01:58 +03:00
2026-05-25 15:33:28 +03:00
2026-05-25 15:45:33 +03:00
2026-05-25 15:59:32 +03:00
2026-05-25 17:52:53 +03:00
2026-05-25 21:15:44 +03:00
2026-05-25 21:16:32 +03:00
2026-05-25 21:33:20 +03:00
2026-05-25 22:08:23 +03:00
2026-05-25 22:14:31 +03:00
2026-05-25 22:23:59 +03:00
2026-05-25 22:58:20 +03:00
2026-05-25 23:17:30 +03:00
2026-05-25 23:25:13 +03:00
2026-05-25 23:33:52 +03:00
2026-05-25 23:40:51 +03:00
2026-05-25 23:43:46 +03:00
2026-05-26 01:45:21 +03:00
2026-05-26 01:49:31 +03:00
2026-05-26 01:56:25 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-25 09:50:37 +03:00
2026-05-19 11:51:34 +03:00
2026-05-19 11:57:44 +03:00
2026-05-19 11:57:44 +03:00
2026-05-19 12:01:01 +03:00
2026-05-19 11:59:18 +03:00
2026-05-19 11:59:18 +03:00
2026-05-19 11:59:18 +03:00
2026-05-22 13:13:43 +03:00
2026-05-22 13:13:43 +03:00
2026-05-20 13:53:25 +03:00
2026-05-20 15:13:33 +03:00
2026-05-20 13:53:25 +03:00
2026-05-20 13:53:25 +03:00
2026-05-20 13:53:25 +03:00
2026-05-20 13:53:25 +03:00
2026-05-20 13:53:25 +03:00
2026-05-20 13:53:25 +03:00
2026-05-20 13:53:25 +03:00
2026-05-23 01:28:32 +03:00
2026-05-23 01:28:32 +03:00
2026-05-20 12:46:40 +03:00
2026-05-20 12:46:40 +03:00
2026-05-25 16:32:32 +03:00
2026-05-20 12:46:40 +03:00
2026-05-20 12:46:40 +03:00
2026-05-20 12:46:40 +03:00
2026-05-20 12:46:40 +03:00
2026-05-20 12:46:40 +03:00
2026-05-23 01:28:32 +03:00
2026-05-20 10:32:56 +03:00
2026-05-20 10:47:07 +03:00
2026-05-20 12:51:48 +03:00
2026-05-20 14:50:21 +03:00
2026-05-20 16:57:30 +03:00
2026-05-25 16:32:32 +03:00
2026-05-19 12:40:21 +03:00
2026-05-19 12:48:38 +03:00
2026-05-19 13:01:28 +03:00
2026-05-19 18:39:10 +03:00
2026-05-19 18:44:14 +03:00
2026-05-19 18:50:26 +03:00
2026-05-19 18:51:56 +03:00
2026-05-19 18:53:19 +03:00
2026-05-19 21:14:31 +03:00
2026-05-20 15:13:33 +03:00
2026-05-19 20:12:09 +03:00
2026-05-19 21:19:09 +03:00
2026-05-25 23:29:55 +03:00
2026-05-25 16:07:19 +03:00
2026-05-25 16:07:19 +03:00
2026-05-25 16:07:19 +03:00
2026-05-25 16:07:19 +03:00
2026-05-25 16:32:32 +03:00
2026-05-25 16:55:32 +03:00
2026-05-25 17:03:16 +03:00
2026-05-17 21:17:17 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-24 22:59:20 +03:00
2026-05-24 22:59:20 +03:00
2026-05-26 16:42:21 +03:00