Calling a protocol method on a pack element now works: `xs[i].greet()` on a `..xs: Greeter` pack dispatches to the concrete element's impl, and elements may be heterogeneous (Dog, Cat). This is the protocol-interface access the pack is for. (Protocol method decls omit the implicit `self`; impls list it — the earlier malformed `(self: *Self)` decls were why dispatch looked broken.) Also fixes packArgConformsTo for non-parameterised protocols: it queried `protocol_thunk_map`, which is only populated lazily when a protocol VALUE is built with `xx`, so it false-negatived valid conformers. Now it queries impl-declaration state directly — `param_impl_map` for parameterised protocols, or `<ty>.<method>` entries in `fn_ast_map` for non-parameterised ones. examples/193-protocol-pack-methods.sx (heterogeneous Dog+Cat pack, per-element greet(), order-independent).
2 lines
2 B
Plaintext
2 lines
2 B
Plaintext
0
|