Commit c24801a
committed
SILGen: Properly set up addressability scopes for case pattern bindings.
In order to accommodate case bodies with multiple case labels, the AST
represents the bindings in each pattern as a distinct declaration from
the matching binding in the case body, and SILGen shares the variable
representation between the two declarations. That means that the two
declarations also need to be able to share an addressable representation.
Add an "alias" state to the addressable buffer data structures so that
we can refer back to the original case label var decl when the case body
var decl is brought into scope, so that accesses through either decl
properly force the addressable representation.
Fixes rdar://154543619.1 parent 6e8287c commit c24801a
File tree
5 files changed
+126
-31
lines changed- lib/SILGen
- test/SILGen
5 files changed
+126
-31
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
| 39 | + | |
39 | 40 | | |
40 | 41 | | |
41 | 42 | | |
| |||
698 | 699 | | |
699 | 700 | | |
700 | 701 | | |
| 702 | + | |
| 703 | + | |
| 704 | + | |
| 705 | + | |
701 | 706 | | |
702 | 707 | | |
703 | 708 | | |
704 | 709 | | |
705 | | - | |
706 | 710 | | |
707 | | - | |
| 711 | + | |
708 | 712 | | |
709 | 713 | | |
710 | 714 | | |
711 | 715 | | |
712 | 716 | | |
713 | 717 | | |
714 | | - | |
| 718 | + | |
715 | 719 | | |
716 | 720 | | |
717 | 721 | | |
| |||
2253 | 2257 | | |
2254 | 2258 | | |
2255 | 2259 | | |
2256 | | - | |
| 2260 | + | |
2257 | 2261 | | |
2258 | 2262 | | |
2259 | 2263 | | |
| |||
2291 | 2295 | | |
2292 | 2296 | | |
2293 | 2297 | | |
2294 | | - | |
2295 | | - | |
2296 | | - | |
| 2298 | + | |
| 2299 | + | |
| 2300 | + | |
| 2301 | + | |
| 2302 | + | |
| 2303 | + | |
| 2304 | + | |
| 2305 | + | |
| 2306 | + | |
| 2307 | + | |
| 2308 | + | |
| 2309 | + | |
| 2310 | + | |
| 2311 | + | |
| 2312 | + | |
| 2313 | + | |
| 2314 | + | |
| 2315 | + | |
| 2316 | + | |
| 2317 | + | |
2297 | 2318 | | |
2298 | 2319 | | |
2299 | 2320 | | |
| |||
2312 | 2333 | | |
2313 | 2334 | | |
2314 | 2335 | | |
| 2336 | + | |
| 2337 | + | |
| 2338 | + | |
| 2339 | + | |
2315 | 2340 | | |
2316 | | - | |
| 2341 | + | |
2317 | 2342 | | |
2318 | 2343 | | |
2319 | 2344 | | |
| |||
2333 | 2358 | | |
2334 | 2359 | | |
2335 | 2360 | | |
2336 | | - | |
2337 | | - | |
2338 | | - | |
2339 | | - | |
2340 | | - | |
2341 | | - | |
| 2361 | + | |
| 2362 | + | |
| 2363 | + | |
| 2364 | + | |
2342 | 2365 | | |
2343 | 2366 | | |
2344 | 2367 | | |
2345 | | - | |
2346 | | - | |
| 2368 | + | |
| 2369 | + | |
2347 | 2370 | | |
2348 | 2371 | | |
2349 | 2372 | | |
| |||
2390 | 2413 | | |
2391 | 2414 | | |
2392 | 2415 | | |
| 2416 | + | |
| 2417 | + | |
| 2418 | + | |
2393 | 2419 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2004 | 2004 | | |
2005 | 2005 | | |
2006 | 2006 | | |
| 2007 | + | |
| 2008 | + | |
| 2009 | + | |
| 2010 | + | |
| 2011 | + | |
| 2012 | + | |
| 2013 | + | |
| 2014 | + | |
| 2015 | + | |
| 2016 | + | |
| 2017 | + | |
| 2018 | + | |
| 2019 | + | |
| 2020 | + | |
| 2021 | + | |
| 2022 | + | |
| 2023 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
| 30 | + | |
30 | 31 | | |
31 | 32 | | |
32 | 33 | | |
| |||
497 | 498 | | |
498 | 499 | | |
499 | 500 | | |
500 | | - | |
501 | | - | |
| 501 | + | |
| 502 | + | |
502 | 503 | | |
503 | 504 | | |
504 | 505 | | |
505 | 506 | | |
506 | 507 | | |
507 | 508 | | |
508 | 509 | | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
509 | 515 | | |
510 | 516 | | |
511 | | - | |
| 517 | + | |
512 | 518 | | |
| 519 | + | |
513 | 520 | | |
514 | 521 | | |
515 | 522 | | |
516 | 523 | | |
517 | | - | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
518 | 528 | | |
519 | 529 | | |
520 | 530 | | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
521 | 537 | | |
522 | 538 | | |
523 | 539 | | |
| |||
535 | 551 | | |
536 | 552 | | |
537 | 553 | | |
| 554 | + | |
| 555 | + | |
538 | 556 | | |
539 | 557 | | |
540 | 558 | | |
541 | | - | |
| 559 | + | |
| 560 | + | |
542 | 561 | | |
543 | 562 | | |
544 | 563 | | |
545 | 564 | | |
546 | | - | |
| 565 | + | |
547 | 566 | | |
548 | 567 | | |
549 | 568 | | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
550 | 575 | | |
551 | 576 | | |
552 | | - | |
| 577 | + | |
553 | 578 | | |
554 | | - | |
| 579 | + | |
555 | 580 | | |
556 | 581 | | |
557 | 582 | | |
558 | | - | |
559 | | - | |
| 583 | + | |
| 584 | + | |
560 | 585 | | |
561 | 586 | | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
562 | 591 | | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
563 | 596 | | |
564 | | - | |
| 597 | + | |
565 | 598 | | |
566 | 599 | | |
567 | 600 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
27 | | - | |
28 | 27 | | |
29 | 28 | | |
30 | 29 | | |
| |||
241 | 240 | | |
242 | 241 | | |
243 | 242 | | |
244 | | - | |
| 243 | + | |
245 | 244 | | |
246 | 245 | | |
247 | 246 | | |
| |||
975 | 974 | | |
976 | 975 | | |
977 | 976 | | |
978 | | - | |
979 | | - | |
980 | 977 | | |
| 978 | + | |
981 | 979 | | |
982 | 980 | | |
983 | 981 | | |
| |||
3175 | 3173 | | |
3176 | 3174 | | |
3177 | 3175 | | |
| 3176 | + | |
| 3177 | + | |
| 3178 | + | |
3178 | 3179 | | |
3179 | 3180 | | |
3180 | 3181 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
0 commit comments