Skip to content

Commit a00aa6d

Browse files
committed
[Parse] Allow ~ in SIL.
Enable writing tests that include types decorated `: ~Copyable` and `: ~Escapable`.
1 parent 4b3e110 commit a00aa6d

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

lib/Parse/ParseType.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ ParserResult<TypeRepr> Parser::parseTypeSimple(
172172

173173
// Eat any '~' preceding the type.
174174
SourceLoc tildeLoc;
175-
if (Tok.isTilde() && !isInSILMode()) {
175+
if (Tok.isTilde()) {
176176
tildeLoc = consumeToken();
177177
}
178178

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// RUN: %target-sil-opt \
2+
// RUN: %s \
3+
// RUN: -enable-experimental-feature NoncopyableGenerics \
4+
// RUN: -enable-experimental-feature NonescapableTypes \
5+
// RUN: | \
6+
// RUN: %target-sil-opt \
7+
// RUN: -enable-experimental-feature NoncopyableGenerics \
8+
// RUN: -enable-experimental-feature NonescapableTypes \
9+
// RUN: | \
10+
// RUN: %FileCheck %s
11+
12+
// For -enable-experimental-feature NoncopyableGenerics/NonescapableTypes
13+
// REQUIRES: asserts
14+
// TODO: Once NoncopyableGenerics/NonescapableTypes is no longer behind a feature flag, merge this into basic2.
15+
16+
sil_stage raw
17+
18+
import Swift
19+
20+
// CHECK-LABEL: struct NCG<T> : ~Copyable {
21+
// CHECK-NEXT: var t: T
22+
// CHECK-NEXT: deinit
23+
struct NCG<T> : ~Copyable {
24+
var t: T
25+
deinit
26+
}
27+
28+
// CHECK-LABEL: struct NEG<T> : ~Escapable {
29+
// CHECK-NEXT: var t: T
30+
struct NEG<T> : ~Escapable {
31+
var t: T
32+
}
33+

0 commit comments

Comments
 (0)