Commit graph

1 commit

Author SHA1 Message Date
Yogthos
f7747ed1b4 Phase 12: Protocol System — full implementation with all tests passing
Root cause: fn* multi-arity detection checks (array? (in form 1))
— defprotocol used @[...] for args, triggering multi-arity path
that treated the body form as a second arity pair.

Fixes applied:
- defprotocol: change fn* args from @[...] to [...] (tuple)
  so single-arity fn* path is used with [this & rest-args]
- defprotocol: remove quote wrappers from protocol-dispatch call
  (protocol-name and method-name passed directly as symbols)
- extend-type/extend-protocol: remove quote wrappers from
  register-method call (symbols passed directly, not via quote)
- protocol-dispatch: use (in form ...) directly for proto/method
  symbols (no eval-form needed after quote removal)
- satisfy?: extract name string from protocol value's :name field
  (which is a symbol struct, not a plain string)
- make-reified: remove spurious (apply fn []) call
- core-reify: fix (keyword struct) → extract :name string first
- core-extend-protocol: handle single method spec vs multi

5 test sections (35-39) covering:
  defprotocol, extend-type, extend-protocol,
  satisfies?, reify — all pass

315 ok, 2 fail (pre-existing, unchanged)
2026-06-03 00:33:41 -04:00