Files
swift-mirror/test/SILOptimizer/pound_assert_test_recursive.swift
2024-02-19 02:48:36 -10:00

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)
}