mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
36 lines
1.1 KiB
Swift
36 lines
1.1 KiB
Swift
// RUN: %target-swift-frontend %s -emit-ir -g -o - | FileCheck %s
|
|
|
|
// CHECK: define{{.*}}@_TFF11autoclosure7call_meFVs5Int64T_u_KT_Ps7Boolean_
|
|
// CHECK-NOT: ret void
|
|
// CHECK: call void @llvm.dbg.declare{{.*}}, !dbg
|
|
// CHECK-NOT: ret void
|
|
// CHECK: , !dbg ![[DBG:.*]]
|
|
// CHECK: ret void
|
|
|
|
func get_truth(input: Int64) -> Int64 {
|
|
return input % 2
|
|
}
|
|
|
|
// Since this is an autoclosure test, don't use &&, which is transparent.
|
|
infix operator &&&&& {
|
|
associativity left
|
|
precedence 120
|
|
}
|
|
|
|
func &&&&&(lhs: Boolean, @autoclosure rhs: () -> Boolean) -> Bool {
|
|
return lhs.boolValue ? rhs().boolValue : false
|
|
}
|
|
|
|
func call_me(input: Int64) -> Void {
|
|
// rdar://problem/14627460
|
|
// An autoclosure should have a line number in the debug info and a scope line of 0.
|
|
// CHECK-DAG: !DISubprogram({{.*}}linkageName: "_TFF11autoclosure7call_meFVs5Int64T_u_KT_Ps7Boolean_",{{.*}} line: [[@LINE+3]],{{.*}} isLocal: false, isDefinition: true
|
|
// But not in the line table.
|
|
// CHECK-DAG: ![[DBG]] = !DILocation(line: [[@LINE+1]],
|
|
if input != 0 &&&&& ( get_truth (input * 2 + 1) > 0 ) {
|
|
}
|
|
|
|
}
|
|
|
|
call_me(5)
|