Commit 5d78973
committed
feat(lowering): support tuple element access via
Implements the lowering half of `t.0` tuple-index member access, building
on the semantic support (#10111).
Generalizes the member-access machinery from struct-only to any aggregate
(struct or tuple):
- Replace `concrete_struct_id`-keyed scattering with a `TypeId`-keyed
`Scattered`, keyed by `MemberAccessKind` instead of `MemberId`.
- Add `aggregate_ty`, `aggregate_members`, and `member_access_components`
helpers in `refs.rs` that handle both structs and tuples uniformly.
- Handle `MemberAccessKind::Index` in member-access lowering, ref-binding,
and struct deconstruct/reconstruct.
Adds lowering test_data and corelib tests covering tuple index read,
nested access, assignment, `ref` arguments, and access through snapshots.t.0 syntax1 parent b57a97e commit 5d78973
6 files changed
Lines changed: 393 additions & 110 deletions
File tree
- corelib/src
- test/language_features
- crates/cairo-lang-lowering/src
- lower
- test_data
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
49 | 49 | | |
50 | 50 | | |
51 | 51 | | |
| 52 | + | |
52 | 53 | | |
53 | 54 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
8 | 7 | | |
9 | 8 | | |
10 | 9 | | |
11 | | - | |
| 10 | + | |
12 | 11 | | |
13 | | - | |
| 12 | + | |
14 | 13 | | |
15 | 14 | | |
16 | 15 | | |
17 | 16 | | |
18 | | - | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
19 | 21 | | |
20 | 22 | | |
21 | 23 | | |
| |||
225 | 227 | | |
226 | 228 | | |
227 | 229 | | |
228 | | - | |
229 | | - | |
230 | | - | |
231 | | - | |
232 | 230 | | |
233 | | - | |
234 | | - | |
235 | | - | |
236 | | - | |
| 231 | + | |
| 232 | + | |
237 | 233 | | |
238 | | - | |
239 | | - | |
240 | | - | |
241 | | - | |
242 | | - | |
243 | | - | |
244 | | - | |
245 | | - | |
246 | | - | |
247 | | - | |
248 | | - | |
249 | | - | |
| 234 | + | |
| 235 | + | |
250 | 236 | | |
251 | 237 | | |
252 | 238 | | |
| |||
429 | 415 | | |
430 | 416 | | |
431 | 417 | | |
432 | | - | |
433 | | - | |
434 | | - | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
435 | 423 | | |
436 | 424 | | |
437 | 425 | | |
| |||
492 | 480 | | |
493 | 481 | | |
494 | 482 | | |
495 | | - | |
| 483 | + | |
496 | 484 | | |
497 | 485 | | |
498 | 486 | | |
499 | 487 | | |
500 | | - | |
| 488 | + | |
501 | 489 | | |
502 | | - | |
503 | | - | |
504 | | - | |
505 | | - | |
506 | | - | |
| 490 | + | |
| 491 | + | |
507 | 492 | | |
508 | | - | |
509 | | - | |
| 493 | + | |
| 494 | + | |
510 | 495 | | |
511 | 496 | | |
512 | 497 | | |
| |||
528 | 513 | | |
529 | 514 | | |
530 | 515 | | |
531 | | - | |
| 516 | + | |
532 | 517 | | |
533 | 518 | | |
534 | | - | |
535 | | - | |
536 | 519 | | |
537 | 520 | | |
538 | 521 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
35 | 35 | | |
36 | 36 | | |
37 | 37 | | |
38 | | - | |
| 38 | + | |
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
| |||
1803 | 1803 | | |
1804 | 1804 | | |
1805 | 1805 | | |
1806 | | - | |
1807 | | - | |
1808 | | - | |
1809 | | - | |
1810 | | - | |
1811 | | - | |
1812 | 1806 | | |
1813 | 1807 | | |
1814 | 1808 | | |
1815 | 1809 | | |
1816 | 1810 | | |
1817 | 1811 | | |
1818 | 1812 | | |
1819 | | - | |
1820 | | - | |
1821 | | - | |
1822 | | - | |
1823 | | - | |
1824 | | - | |
1825 | | - | |
1826 | | - | |
| 1813 | + | |
| 1814 | + | |
| 1815 | + | |
| 1816 | + | |
| 1817 | + | |
| 1818 | + | |
| 1819 | + | |
| 1820 | + | |
| 1821 | + | |
1827 | 1822 | | |
1828 | | - | |
1829 | | - | |
1830 | | - | |
1831 | | - | |
1832 | | - | |
1833 | | - | |
1834 | | - | |
1835 | | - | |
1836 | | - | |
1837 | | - | |
| 1823 | + | |
| 1824 | + | |
1838 | 1825 | | |
1839 | 1826 | | |
1840 | 1827 | | |
| |||
0 commit comments