[swift-evolution] Immediately-called closures should be considered @noescape
    Chris Lattner 
    clattner at apple.com
       
    Tue Dec 15 18:44:43 CST 2015
    
    
  
> On Dec 15, 2015, at 3:16 PM, Brent Royal-Gordon via swift-evolution <swift-evolution at swift.org> wrote:
> 
> Here’s a little annoyance I ran across just now:
> 
>            let sub: CKSubscription = {
>                if let ID = self.ID {
>                    return CKSubscription(recordType: typeName, predicate: predicate, subscriptionID: ID, options: allMutations)
>                }
>                else {
>                    return CKSubscription(recordType: typeName, predicate: predicate, options: allMutations)
>                }
>            }()
> 
> This closure obviously never leaves the enclosing function, but Swift doesn’t treat it as if it had been passed to a @noescape function, so I have to say “self.ID” instead of “ID” in the condition. That’s a bit irritating, and I’d like to see it improved.
I’m pretty sure this is already the case, is it not?  Perhaps this is only happening in a function body context, but not in a property initializer?
-Chris
    
    
More information about the swift-evolution
mailing list