File tree Expand file tree Collapse file tree 2 files changed +73
-0
lines changed Expand file tree Collapse file tree 2 files changed +73
-0
lines changed Original file line number Diff line number Diff line change @@ -631,3 +631,40 @@ extension MiscTests {
631
631
}
632
632
}
633
633
634
+ //////////////////////////////////
635
+ // Multiple Captures from Defer //
636
+ //////////////////////////////////
637
+
638
+ func multipleCapture1< T : P > ( _ k: T ) -> ( ) {
639
+ let kType = type ( of: k)
640
+ var k2 = k
641
+ var k3 = k
642
+ let _ = _move ( k2)
643
+ let _ = _move ( k3)
644
+ var k4 = k
645
+ k4 = k
646
+ defer {
647
+ k2 = kType. getP ( )
648
+ print ( k4)
649
+ k3 = kType. getP ( )
650
+ }
651
+ print ( " foo bar " )
652
+ }
653
+
654
+ func multipleCapture2< T : P > ( _ k: T ) -> ( ) {
655
+ let kType = type ( of: k)
656
+ var k2 = k // expected-error {{'k2' used after being moved}}
657
+ k2 = k
658
+ var k3 = k
659
+ let _ = _move ( k2) // expected-note {{move here}}
660
+ let _ = _move ( k3)
661
+ var k4 = k
662
+ k4 = k
663
+ defer {
664
+ print ( k2) // expected-note {{use here}}
665
+ print ( k4)
666
+ k3 = kType. getP ( )
667
+ }
668
+ print ( " foo bar " )
669
+ }
670
+
Original file line number Diff line number Diff line change @@ -674,3 +674,39 @@ extension KlassWrapper {
674
674
print ( " foo bar " )
675
675
}
676
676
}
677
+
678
+ //////////////////////////////////
679
+ // Multiple Captures from Defer //
680
+ //////////////////////////////////
681
+
682
+ func multipleCapture1( _ k: Klass ) -> ( ) {
683
+ var k2 = k
684
+ var k3 = k
685
+ let _ = _move ( k2)
686
+ let _ = _move ( k3)
687
+ var k4 = k
688
+ k4 = k
689
+ defer {
690
+ k2 = Klass ( )
691
+ print ( k4)
692
+ k3 = Klass ( )
693
+ }
694
+ print ( " foo bar " )
695
+ }
696
+
697
+ func multipleCapture2( _ k: Klass ) -> ( ) {
698
+ var k2 = k // expected-error {{'k2' used after being moved}}
699
+ k2 = k
700
+ var k3 = k
701
+ let _ = _move ( k2) // expected-note {{move here}}
702
+ let _ = _move ( k3)
703
+ var k4 = k
704
+ k4 = k
705
+ defer {
706
+ print ( k2) // expected-note {{use here}}
707
+ print ( k4)
708
+ k3 = Klass ( )
709
+ }
710
+ print ( " foo bar " )
711
+ }
712
+
You can’t perform that action at this time.
0 commit comments