Narrows locally-declared entries against an inherited template, flagging incompatible overrides.
Retains each entry whose key is also inherited only when its Slot projection is assignable to the
Narrowings expansion of the inherited property type; a mismatch collapses to never, surfacing the
conflict at the resource call site as a type error on the offending entry. Entries with keys not present
on the parent pass through unchanged. Enforces the rule that overrides may restrict inherited constraints but never
relax them.
For inherited union slots, Narrowings expands the comparison to also accept the new narrowing forms
permitted at extends-time: a non-union value shape that narrows a parent variant (Form 1 single-variant narrowing)
and a union whose variants each narrow a distinct parent variant (Form 2 subsetting). Type-level acceptance is
intentionally permissive: a child variant that narrows no parent variant, several, or the same parent as another
child variant compiles but throws at runtime.
Narrows locally-declared entries against an inherited template, flagging incompatible overrides.
Retains each entry whose key is also inherited only when its Slot projection is assignable to the Narrowings expansion of the inherited property type; a mismatch collapses to
never, surfacing the conflict at the resource call site as a type error on the offending entry. Entries with keys not present on the parent pass through unchanged. Enforces the rule that overrides may restrict inherited constraints but never relax them.For inherited union slots, Narrowings expands the comparison to also accept the new narrowing forms permitted at extends-time: a non-union value shape that narrows a parent variant (Form 1 single-variant narrowing) and a union whose variants each narrow a distinct parent variant (Form 2 subsetting). Type-level acceptance is intentionally permissive: a child variant that narrows no parent variant, several, or the same parent as another child variant compiles but throws at runtime.