Skip to content

Commit 319f8be

Browse files
swift-ciEwa Matejska
authored andcommitted
Merge pull request #27091 from gottesmm/pr-4e08bfd476fc6b39ee3e81032ed3ccaae7417568
1 parent 7e89bee commit 319f8be

File tree

2 files changed

+23
-11
lines changed

2 files changed

+23
-11
lines changed

test/SILOptimizer/pound_assert.swift

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// RUN: %target-swift-frontend -enable-experimental-static-assert -emit-sil %s -verify
2+
// RUN: %target-swift-frontend -enable-experimental-static-assert -enable-ownership-stripping-after-serialization -emit-sil %s -verify
23

34
// REQUIRES: optimized_stdlib
45
// REQUIRES: asserts
@@ -67,17 +68,6 @@ func test_loops() {
6768
#assert(infiniteLoop() == 1)
6869
}
6970

70-
func recursive(a: Int) -> Int {
71-
// expected-note@+1 {{limit exceeded here}}
72-
return a == 0 ? 0 : recursive(a: a-1)
73-
}
74-
75-
func test_recursive() {
76-
// expected-error @+2 {{#assert condition not constant}}
77-
// expected-note @+1 {{exceeded instruction limit: 512 when evaluating the expression at compile time}}
78-
#assert(recursive(a: 20000) > 42)
79-
}
80-
8171
func conditional(_ x: Int) -> Int {
8272
if x < 0 {
8373
return 0
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// RUN: not %target-swift-frontend -enable-experimental-static-assert -emit-sil %s 2>&1 | %FileCheck %s
2+
// RUN: not %target-swift-frontend -enable-experimental-static-assert -enable-ownership-stripping-after-serialization -emit-sil %s 2>&1 | %FileCheck %s
3+
4+
// This is a special FileCheck test for testing that we properly catch that we
5+
// are recursing here. The reason why this is separate from the other
6+
// pound_assert tests is that the "limit exceeded" here diagnostic can vary
7+
// depending on the codegen since we are using an arbitrary limit of 512. If the
8+
// codegen changes, the line where we stop evaluating can change meaning that
9+
// the note moves around lines. With FileCheck we have more flexibility to just
10+
// match what we actually want.
11+
12+
// CHECK: error: #assert condition not constant
13+
// CHECK: note: exceeded instruction limit: 512 when evaluating the expression at compile time
14+
// CHECK: limit exceeded here
15+
func recursive(a: Int) -> Int {
16+
return a == 0 ? 0 : recursive(a: a-1)
17+
}
18+
19+
func test_recursive() {
20+
#assert(recursive(a: 20000) > 42)
21+
}
22+

0 commit comments

Comments
 (0)