In Swift 5.1 I believe we get a warning if you have an enum with case .none and you assign it to Optional value. It is not the same, but similar sort of ambiguity that compiler warns about.
In case of my idea compiler should have a special case for Bool give a warning that only identifier optional unwrapping is performed and no value comparison is made.
Many posts and discussions around this topic made me realise that the reason we are using closures so much is all the completion APIs in Cocoa. Once we get proper asynchronous APIs in Swift (async/await) we can get rid of completion closures.
So ultimately the solution is not shorter weak selves, it’s async/await.