forked from swiftlang/swift
- Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclosure.swift
21 lines (18 loc) · 793 Bytes
/
closure.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// RUN: %target-swift-frontend %s -emit-ir -g -o - | %FileCheck %s
func markUsed<T>(_ t:T){}
func foldl1<T>(_ list:[T], _ function:(_ a:T, _ b:T)->T)->T{
assert(list.count >1)
varaccumulator=list[0]
foriin1..< list.count {
accumulator =function(accumulator,list[i])
}
return accumulator
}
vara=[Int64](repeating:0, count:10)
foriin0..<10{a[i]=Int64(i)}
// A closure is not an artificial function (the last i32 0).
// CHECK: !DISubprogram({{.*}}linkageName: "$s7closures5Int64VAC_ACtXEfU_",{{.*}} line: 20,{{.*}} scopeLine: 20,
// CHECK: !DILocalVariable(name: "$0", arg: 1{{.*}} line: [[@LINE+2]],
// CHECK: !DILocalVariable(name: "$1", arg: 2{{.*}} line: [[@LINE+1]],
varsum:Int64=foldl1(a,{ $0 + $1 })
markUsed(sum)