Files
swift-mirror/test/expr/closure/basic.swift
Chris Lattner 66683f94f9 Eliminate the "IsReturnExpr" bit from the AST - it was a poorly maintained
version of the new CTP_ReturnStmt conversion, used to generate return-specific 
diagnostics.  Now that we have a general solution, we can just use that.

This improves diagnostics in returns for accessors, since they were apparently
not getting the bit set.


Swift SVN r30665
2015-07-26 22:05:40 +00:00

43 lines
1007 B
Swift

// RUN: %target-parse-verify-swift
func takeIntToInt(f: (Int) -> Int) { }
func takeIntIntToInt(f: (Int, Int) -> Int) { }
// Simple closures
func simple() {
takeIntToInt({(x: Int) -> Int in
return x + 1
})
takeIntIntToInt({(x: Int, y: Int) -> Int in
return x + y
})
}
// Closures with variadic argument lists
func variadic() {
var f = {(start: Int, rest: Int...) -> Int in
var result = start
for x in rest {
result += x
}
return result
}
f(1)
f(1, 2)
f(1, 3)
let D = { (Ss ...) in 1 } // expected-error{{'...' cannot be applied to a subpattern which is not explicitly typed}}, expected-error{{type 'Int' does not conform to protocol 'IntegerLiteralConvertible'}}
}
// Closures with attributes in the parameter list.
func attrs() {
_ = {(inout z: Int) -> Int in z }
}
// Closures with argument and parameter names.
func argAndParamNames() -> Int {
let f1: (x: Int, y: Int) -> Int = { (a x, b y) in x + y }
f1(x: 1, y: 2)
return f1(x: 1, y: 2)
}