1- // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=RETURN_VOID_1 | %FileCheck %s -check-prefix=RETURN_VOID_1
2- // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=RETURN_INT_1 | %FileCheck %s -check-prefix=RETURN_INT_1
3- // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=RETURN_INT_2 | %FileCheck %s -check-prefix=RETURN_INT_2
4-
5- // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=TRY_RETURN_INT | %FileCheck %s -check-prefix=RETURN_INT_1
6- // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=TRY_RETURN_VOID | %FileCheck %s -check-prefix=RETURN_VOID_1
7- // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=RETURN_TR1 | %FileCheck %s -check-prefix=RETURN_TR1
8- // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=RETURN_TR2 | %FileCheck %s -check-prefix=RETURN_TR2
9- // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=RETURN_TR3 | %FileCheck %s -check-prefix=RETURN_TR3
10- // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=RETURN_TR1_METHOD | %FileCheck %s -check-prefix=RETURN_TR1
11- // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=RETURN_TR2_METHOD | %FileCheck %s -check-prefix=RETURN_TR2
12- // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=RETURN_TR3_METHOD | %FileCheck %s -check-prefix=RETURN_TR3
13- // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=RETURN_TR1_STATICMETHOD | %FileCheck %s -check-prefix=RETURN_TR1
14- // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=RETURN_TR2_STATICMETHOD | %FileCheck %s -check-prefix=RETURN_TR2
15- // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=RETURN_TR3_STATICMETHOD | %FileCheck %s -check-prefix=RETURN_TR3
16- // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=RETURN_TR1_CLOSURE | %FileCheck %s -check-prefix=RETURN_TR1
17- // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=RETURN_TR2_CLOSURE | %FileCheck %s -check-prefix=RETURN_TR2
18- // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=RETURN_TR3_CLOSURE | %FileCheck %s -check-prefix=RETURN_TR3
1+ // RUN: %batch-code-completion
192
203struct FooStruct {
214 var instanceVar : Int
@@ -64,11 +47,11 @@ func testReturnInt2(_ fooObject: FooStruct) {
6447}
6548
6649func testMisplacedTry( ) throws -> Int {
67- try return #^TRY_RETURN_INT^#
50+ try return #^TRY_RETURN_INT? check = RETURN_INT_1 ^#
6851}
6952
7053func testMisplacedTryVoid( ) throws {
71- try return #^TRY_RETURN_VOID^#
54+ try return #^TRY_RETURN_VOID? check = RETURN_VOID_1 ^#
7255}
7356
7457func testTR1( ) -> Int ? {
@@ -111,26 +94,26 @@ struct TestStruct {
11194 var i : Int
11295 var oi : Int ?
11396 var fs : FooStruct
114- return #^RETURN_TR1 _METHOD^#
97+ return #^RETURN_TR1 _METHOD? check = RETURN_TR1 ^#
11598 }
11699 func testTR2_method( _ g : Gen ) -> Int ? {
117- return g. #^RETURN_TR2_METHOD^#
100+ return g. #^RETURN_TR2_METHOD? check = RETURN_TR2 ^#
118101 }
119102 func testTR3_method( _ g : Gen ) -> Int ? {
120- return g. IG. #^RETURN_TR3_METHOD^#
103+ return g. IG. #^RETURN_TR3_METHOD? check = RETURN_TR3 ^#
121104 }
122105
123106 static func testTR1_static( ) -> Int ? {
124107 var i : Int
125108 var oi : Int ?
126109 var fs : FooStruct
127- return #^RETURN_TR1 _STATICMETHOD^#
110+ return #^RETURN_TR1 _STATICMETHOD? check = RETURN_TR1 ^#
128111 }
129112 static func testTR2_static( _ g : Gen ) -> Int ? {
130- return g. #^RETURN_TR2_STATICMETHOD^#
113+ return g. #^RETURN_TR2_STATICMETHOD? check = RETURN_TR2 ^#
131114 }
132115 static func testTR3_static( _ g : Gen ) -> Int ? {
133- return g. IG. #^RETURN_TR3_STATICMETHOD^#
116+ return g. IG. #^RETURN_TR3_STATICMETHOD? check = RETURN_TR3 ^#
134117 }
135118}
136119
@@ -140,12 +123,26 @@ func testClosures(_ g: Gen) {
140123 var fs : FooStruct
141124
142125 _ = { ( ) -> Int ? in
143- return #^RETURN_TR1 _CLOSURE^#
126+ return #^RETURN_TR1 _CLOSURE? check = RETURN_TR1 ^#
144127 }
145128 _ = { ( ) -> Int ? in
146- return g. #^RETURN_TR2_CLOSURE^#
129+ return g. #^RETURN_TR2_CLOSURE? check = RETURN_TR2 ^#
147130 }
148131 _ = { ( ) -> Int ? in
149- return g. IG. #^RETURN_TR3_CLOSURE^#
132+ return g. IG. #^RETURN_TR3_CLOSURE? check= RETURN_TR3^#
133+ }
134+ }
135+
136+ // Make sure we can do a completion in an out-of-place return
137+ do {
138+ return TestStruct. #^COMPLETE_IN_INVALID_RETURN^#
139+ // COMPLETE_IN_INVALID_RETURN: Decl[StaticMethod]/CurrNominal: testTR1_static()[#Int?#]; name=testTR1_static()
140+ // COMPLETE_IN_INVALID_RETURN: Decl[StaticMethod]/CurrNominal: testTR2_static({#(g): Gen#})[#Int?#]; name=testTR2_static(:)
141+ // COMPLETE_IN_INVALID_RETURN: Decl[StaticMethod]/CurrNominal: testTR3_static({#(g): Gen#})[#Int?#]; name=testTR3_static(:)
142+ }
143+
144+ struct TestReturnInInit {
145+ init ( ) {
146+ return TestStruct. #^COMPLETE_IN_INVALID_INIT_RETURN? check= COMPLETE_IN_INVALID_RETURN^#
150147 }
151148}
0 commit comments