Hojun-Cho
3d79735964
check: reject a deref-less multi-level **fn call, not silently miscompile ( #14 )
...
wwstage exprtype's N_CALL fn-value arm peeled ALL pointer levels before the
TY_FN gate, so a deref-less `pf(21)` where pf:**fn type-checked and lowered --
then segfaulted at runtime (a silent miscompile). cstage peels exactly one
level and loud-rejects (the C6a discipline, check.c:1947).
Align wwstage DOWN: peel one level (loop -> if); a remaining non-TY_FN callee
hits a loud "calling non-function" reject mirroring cstage's message. Both
stages now reject the exotic deref-less `**fn`/`***fn` shape; the legitimate
`(*pf)(21)` and one-level deref-less `f(21)` (f:*fn) still compile + run.
Multi-level autoderef is a separate deferred FEATURE, not a miscompile to lower
(rule 7/10 -- align the richer stage down to the leaner, no value ships).
ww-only change (cstage is the correct oracle); a reject emits no asm, so the
byte-id baselines and LANGBYTEID floor are unchanged.
Pins: cfail test/wcc/data/fnptr_pp_derefless_reject (both stages reject,
reddens-on-revert -- the silent miscompile resurfaces if the fix is reverted) +
test/lang/fnptr_derefless_call_test (positive guard (*pf)(21)==42 and one-level
f(21), value-asserted + byte-id, so the fix does not over-reject the legitimate
one-level autoderef).
2026-06-29 15:49:01 +09:00
..
2026-06-27 23:44:41 +09:00
2026-06-22 13:52:41 +09:00
2026-06-24 02:45:09 +09:00
2026-06-24 02:45:09 +09:00
2026-06-22 13:34:28 +09:00
2026-06-24 02:45:09 +09:00
2026-06-24 02:45:09 +09:00
2026-06-24 02:45:09 +09:00
2026-06-24 02:45:09 +09:00
2026-06-22 17:10:22 +09:00
2026-06-24 02:45:09 +09:00
2026-06-24 02:45:09 +09:00
2026-06-24 02:45:09 +09:00
2026-06-24 02:45:09 +09:00
2026-06-27 14:16:20 +09:00
2026-06-24 22:59:32 +09:00
2026-06-24 03:25:47 +09:00
2026-06-28 12:20:28 +09:00
2026-06-25 01:32:32 +09:00
2026-06-25 01:32:32 +09:00
2026-06-24 22:59:32 +09:00
2026-06-24 22:59:32 +09:00
2026-06-24 22:59:32 +09:00
2026-06-24 22:59:32 +09:00
2026-06-28 10:43:34 +09:00
2026-06-22 02:53:16 +09:00
2026-06-22 13:52:41 +09:00
2026-06-22 02:04:56 +09:00
2026-06-22 11:52:41 +09:00
2026-06-25 01:32:32 +09:00
2026-06-24 22:59:32 +09:00
2026-06-22 13:34:28 +09:00
2026-06-25 01:32:32 +09:00
2026-06-22 12:04:03 +09:00
2026-06-22 12:04:03 +09:00
2026-06-22 12:04:03 +09:00
2026-06-27 17:19:43 +09:00
2026-06-27 11:47:54 +09:00
2026-06-22 13:34:28 +09:00
2026-06-22 09:02:40 +09:00
2026-06-22 18:06:05 +09:00
2026-06-22 18:06:05 +09:00
2026-06-22 13:34:28 +09:00
2026-06-22 12:31:23 +09:00
2026-06-22 16:34:33 +09:00
2026-06-22 09:02:40 +09:00
2026-06-24 03:25:47 +09:00
2026-06-27 12:34:58 +09:00
2026-06-24 03:25:47 +09:00
2026-06-24 03:25:47 +09:00
2026-06-24 03:25:47 +09:00
2026-06-24 03:25:47 +09:00
2026-06-24 03:25:47 +09:00
2026-06-24 22:59:32 +09:00
2026-06-24 03:25:47 +09:00
2026-06-24 03:25:47 +09:00
2026-06-29 15:49:01 +09:00
2026-06-24 22:59:32 +09:00
2026-06-22 14:56:11 +09:00
2026-06-22 11:52:41 +09:00
2026-06-22 11:52:41 +09:00
2026-06-22 12:31:23 +09:00
2026-06-28 09:54:59 +09:00
2026-06-22 11:52:41 +09:00
2026-06-24 03:25:47 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 20:42:08 +09:00
2026-06-22 02:04:56 +09:00
2026-06-27 13:28:37 +09:00
2026-06-22 16:02:01 +09:00
2026-06-27 18:49:03 +09:00
2026-06-27 18:49:03 +09:00
2026-06-27 19:40:04 +09:00
2026-06-27 19:40:04 +09:00
2026-06-24 20:42:08 +09:00
2026-06-22 02:04:56 +09:00
2026-06-22 16:34:33 +09:00
2026-06-25 01:32:32 +09:00
2026-06-24 20:42:08 +09:00
2026-06-22 11:52:41 +09:00
2026-06-22 16:53:49 +09:00
2026-06-22 18:30:04 +09:00
2026-06-22 11:52:41 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 01:44:13 +09:00
2026-06-28 15:16:52 +09:00
2026-06-24 20:42:08 +09:00
2026-06-25 01:32:32 +09:00
2026-06-24 01:44:13 +09:00
2026-06-24 22:59:32 +09:00
2026-06-24 22:59:32 +09:00
2026-06-22 13:52:41 +09:00
2026-06-24 01:00:47 +09:00
2026-06-24 01:00:47 +09:00
2026-06-24 01:44:13 +09:00
2026-06-22 13:34:28 +09:00
2026-06-24 01:44:13 +09:00
2026-06-22 02:53:16 +09:00
2026-06-25 01:32:32 +09:00
2026-06-22 03:01:09 +09:00
2026-06-22 11:52:41 +09:00
2026-06-26 23:16:19 +09:00
2026-06-22 09:02:40 +09:00
2026-06-22 13:52:41 +09:00
2026-06-22 13:52:41 +09:00
2026-06-22 09:02:40 +09:00
2026-06-22 03:54:54 +09:00
2026-06-22 03:54:54 +09:00
2026-06-22 03:54:54 +09:00
2026-06-22 03:54:54 +09:00
2026-06-22 03:01:09 +09:00
2026-06-22 03:54:54 +09:00
2026-06-22 03:54:54 +09:00
2026-06-22 03:54:54 +09:00
2026-06-25 01:32:32 +09:00
2026-06-22 18:28:41 +09:00
2026-06-25 01:32:32 +09:00
2026-06-28 01:10:31 +09:00
2026-06-22 12:11:46 +09:00
2026-06-25 01:32:32 +09:00
2026-06-22 09:02:40 +09:00
2026-06-22 09:02:40 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 01:44:13 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 01:44:13 +09:00
2026-06-22 11:52:41 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 01:44:13 +09:00
2026-06-22 11:52:41 +09:00
2026-06-24 01:44:13 +09:00
2026-06-24 01:44:13 +09:00
2026-06-24 01:44:13 +09:00
2026-06-24 01:44:13 +09:00
2026-06-24 01:44:13 +09:00
2026-06-22 13:52:41 +09:00
2026-06-24 01:44:13 +09:00
2026-06-24 01:44:13 +09:00
2026-06-24 03:25:47 +09:00
2026-06-24 01:44:13 +09:00
2026-06-24 22:59:32 +09:00
2026-06-22 01:48:38 +09:00
2026-06-28 01:59:21 +09:00
2026-06-27 21:10:17 +09:00
2026-06-27 21:10:03 +09:00
2026-06-25 01:32:32 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 20:42:08 +09:00
2026-06-22 02:53:16 +09:00