agra
c41f51aed3
fix: validate protocol impl method signatures vs the protocol declaration (issue 0178)
...
The issue-0176 conformance gate was name-only, so an impl P for T with a
mismatched return/param type (or arity) built a wrong-ABI thunk that
silently miscompiled (exit 0, wrong value). firstUnimplementedMethod now
validates arity (after self), each param type, and the return type
against the protocol declaration, substituting protocol Self->concrete
via resolveProtoTypeSubSelf (recurses through pointer/many-pointer/
optional/slice/array so []Self<->[]T match; conservative .unresolved for
Self-in-generic-arg). Comparison is by structural formatTypeName
(alias/module/spelling independent); typesClearlyDiffer skips when either
side has an unresolved leaf at any depth, biasing against false-positives.
Regressions: diagnostics/1201 (negative), protocols/0420 (positive,
[]Self param). Verified by 3+3 adversarial reviews (a mid-fix []Self
false-positive was found and closed); suite 792/0.
2026-06-23 08:48:31 +03:00
..
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-23 08:48:31 +03:00
2026-06-21 14:41:34 +03:00
2026-06-22 21:54:12 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-22 11:55:19 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-22 09:45:17 +03:00
2026-06-22 10:15:18 +03:00
2026-06-22 17:55:18 +03:00
2026-06-22 21:04:05 +03:00
2026-06-22 21:54:12 +03:00
2026-06-23 00:25:28 +03:00
2026-06-23 02:13:30 +03:00
2026-06-23 02:13:30 +03:00
2026-06-23 02:47:51 +03:00
2026-06-23 03:31:58 +03:00
2026-06-23 08:48:31 +03:00