lang 2.3: tuple materialization from a pack — (..xs) / (..xs.method)
A `spread_expr` element inside a tuple literal now expands the pack into the tuple's fields: `(..xs.get)` ≈ `(xs[0].get(), …, xs[N-1].get())` (Decision 2 — a pack is stored by materializing a tuple). lowerTupleLiteral detects a pack-spread element via packSpreadRefs and splices the per-element Refs as fields (typed via getRefType); for Box(T) the materialized tuple is heterogeneous. A spread whose operand isn't a pack falls through to the existing spread_expr diagnostic (tuple-value spread not yet handled). When any element is a spread, field-count ≠ element-count, so the contextual target-tuple alignment is skipped (field types inferred from the expanded refs). examples/198-pack-tuple-materialize.sx.
This commit is contained in:
1
tests/expected/198-pack-tuple-materialize.exit
Normal file
1
tests/expected/198-pack-tuple-materialize.exit
Normal file
@@ -0,0 +1 @@
|
||||
0
|
||||
2
tests/expected/198-pack-tuple-materialize.txt
Normal file
2
tests/expected/198-pack-tuple-materialize.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
0=42 1=hi
|
||||
0=x 1=7
|
||||
Reference in New Issue
Block a user