c218d875 · core f63c1e69 · built 2026-10-26 22:39 UTCA record or struct field cannot have an open-record type with an anonymous tail
Gap
record W { d: { x: i64, .. } } is rejected with T0032. The field's type would be existential,
so two values of one nominal type could hide different rows, which does not fit a nominal type.
The same applies to the anonymous splice (record W { s: Session<..> }).
Impact
A field cannot hold an arbitrary wider record. The use is covered by a row parameter on the
record, record W<row R> { d: { x: i64, ..R } }, at the cost of making W generic over the row.
Affects
Resolution
Accepted by RFC-0181. This would follow from an existential row (GAP-TYPES-010), not stand alone.