mirror of
https://github.com/apple/swift.git
synced 2026-03-08 18:24:30 +01:00
Turn the generic CustomAttrTypeRequest into a helper function and introduce a FunctionBuilderTypeRequest that starts from a ParamDecl. This has better caching characteristics and also means we only need to do a single cache lookup in order to resolve the type in the normal path. It also means we don't need as much parameterization in the cache. In addition, check that the parameter has function type in the request, not just when late-checking the attribute, and add a check that it isn't an autoclosure.
27 lines
634 B
Swift
27 lines
634 B
Swift
@_functionBuilder
|
|
struct TupleBuilder {
|
|
static func buildBlock<T1, T2>(_ t1: T1, _ t2: T2) -> (T1, T2) {
|
|
return (t1, t2)
|
|
}
|
|
|
|
static func buildBlock<T1, T2, T3>(_ t1: T1, _ t2: T2, _ t3: T3)
|
|
-> (T1, T2, T3) {
|
|
return (t1, t2, t3)
|
|
}
|
|
|
|
static func buildBlock<T1, T2, T3, T4>(_ t1: T1, _ t2: T2, _ t3: T3, _ t4: T4)
|
|
-> (T1, T2, T3, T4) {
|
|
return (t1, t2, t3, t4)
|
|
}
|
|
|
|
static func buildBlock<T1, T2, T3, T4, T5>(
|
|
_ t1: T1, _ t2: T2, _ t3: T3, _ t4: T4, _ t5: T5
|
|
) -> (T1, T2, T3, T4, T5) {
|
|
return (t1, t2, t3, t4, t5)
|
|
}
|
|
}
|
|
|
|
func tuplify<T>(@TupleBuilder body: () -> T) -> T {
|
|
return body()
|
|
}
|