File tree Expand file tree Collapse file tree 2 files changed +50
-1
lines changed
test/SourceKit/CodeComplete Expand file tree Collapse file tree 2 files changed +50
-1
lines changed Original file line number Diff line number Diff line change @@ -7075,8 +7075,10 @@ BraceStmt *Parser::parseAbstractFunctionBodyImpl(AbstractFunctionDecl *AFD) {
7075
7075
return nullptr ;
7076
7076
7077
7077
BraceStmt *BS = Body.get ();
7078
+ // Reset the single expression body status.
7079
+ AFD->setHasSingleExpressionBody (false );
7078
7080
AFD->setBodyParsed (BS);
7079
-
7081
+
7080
7082
if (Parser::shouldReturnSingleExpressionElement (BS->getElements ())) {
7081
7083
auto Element = BS->getLastElement ();
7082
7084
if (auto *stmt = Element.dyn_cast <Stmt *>()) {
Original file line number Diff line number Diff line change
1
+ // BEGIN t1.swift
2
+ enum E {
3
+ case foo, bar
4
+ }
5
+ func foo( _ arg: E ) { }
6
+ func test( val: E ) {
7
+ foo ( . bar)
8
+ }
9
+
10
+ // BEGIN t2.swift
11
+ enum E {
12
+ case foo, bar
13
+ }
14
+ func foo( _ arg: E ) { }
15
+ func test( val: E ) {
16
+ foo ( . bar)
17
+ if v
18
+ }
19
+
20
+ // BEGIN dummy.swift
21
+
22
+ // rdar://75358153
23
+ // Previously, completing inside single expression body, then completing inside
24
+ // *non* single expression body in the same function caused a crash because the
25
+ // "has single expression" flag didn't cleard. This file tests the scenario not
26
+ // to regress again.
27
+
28
+ // RUN: %empty-directory(%t)
29
+ // RUN: %{python} %utils/split_file.py -o %t %s
30
+
31
+ // RUN: %sourcekitd-test \
32
+ // RUN: -req=complete -pos=6:8 -text-input %t/t1.swift %t/t.swift -- %t/t.swift == \
33
+ // RUN: -req=complete -pos=7:6 -text-input %t/t2.swift %t/t.swift -- %t/t.swift \
34
+ // RUN: | %FileCheck %s
35
+
36
+ // CHECK-LABEL: key.results: [
37
+ // CHECK-DAG: key.description: "bar",
38
+ // CHECK-DAG: key.description: "foo",
39
+ // CHECK-DAG: key.description: "hash(self: E)",
40
+ // CHECK: ]
41
+ // CHECK-NOT: key.reusingastcontext: 1
42
+
43
+ // CHECK-LABEL: key.results: [
44
+ // CHECK-DAG: key.description: "val",
45
+ // CHECK-DAG: key.description: "foo(arg: E)",
46
+ // CHECK: ],
47
+ // CHECK: key.reusingastcontext: 1
You can’t perform that action at this time.
0 commit comments