mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
22 lines
924 B
Swift
22 lines
924 B
Swift
// RUN: not %target-swift-frontend -enable-experimental-static-assert -emit-sil %s 2>&1 | %FileCheck %s
|
|
|
|
// This is a special FileCheck test for testing that we properly catch that we
|
|
// are recursing here. The reason why this is separate from the other
|
|
// pound_assert tests is that the "limit exceeded" here diagnostic can vary
|
|
// depending on the codegen since we are using an arbitrary limit of 512. If the
|
|
// codegen changes, the line where we stop evaluating can change meaning that
|
|
// the note moves around lines. With FileCheck we have more flexibility to just
|
|
// match what we actually want.
|
|
|
|
// CHECK: error: #assert condition not constant
|
|
// CHECK-DAG: note: exceeded instruction limit: {{.*}} when evaluating the expression at compile time
|
|
// CHECK-DAG: limit exceeded here
|
|
func recursive(a: Int) -> Int {
|
|
return a == 0 ? 0 : recursive(a: a-1)
|
|
}
|
|
|
|
func test_recursive() {
|
|
#assert(recursive(a: 20000) > 42)
|
|
}
|
|
|