forked from swiftlang/swift
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathclosures.swift
50 lines (40 loc) · 807 Bytes
/
closures.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// RUN: %target-run-simple-swift | %FileCheck %s
// REQUIRES: executable_test
func localFunc(_ x: Int) -> Int {
func addToX(_ y: Int) -> Int {
return x + y
}
return addToX(1)
}
func localFunc2(_ x: Int) -> (_ y: Int) -> Int {
func addToX(_ y: Int) -> Int {
return x + y
}
return addToX
}
// FIXME global vars
func test() {
// CHECK: 3
print(localFunc(2))
// CHECK: 5
print(localFunc2(2)(3))
var lf = localFunc
// CHECK: 8
print(lf(7))
var lf2 = localFunc2
var lf2_ = lf2(5)
// CHECK: 13
print(lf2_(8))
}
test()
// <rdar://problem/19776288>
func map<T>(_ fn: (T) -> ()) {
print("Void overload")
}
func map<T,U>(_ fn: (T) -> U) {
print("Non-void overload")
}
map({()})
// CHECK: Void overload
map({(x: Int) -> Int in x})
// CHECK: Non-void overload