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 {
631631 }
632632}
633633
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 {
674674 print ( " foo bar " )
675675 }
676676}
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