[Proposal] Literal initialization via coercion proposal
[Proposal] Literal initialization via coercion proposal

Currently types conforming to literal protocols are type-checked using regular
initializer rules, which means that for expressions like `UInt32(42)` the
type-checker is going to look up a set of available initializer choices and
attempt them one-by-one trying to deduce the best solution.

This is not always a desired behavior when it comes to numeric and
other literals, because it means that argument is going to be type-checked
separately (most likely to some default literal type like `Int`) and passed
to an initializer call. At the same time coercion behavior would treat
the expression above as `42 as UInt32` where `42` is ascribed to be `UInt32`
and constructed without an intermediate type.

DevAndArtist/swift-evolution,apple/swift-evolution,hartbit/swift-evolution,airspeedswift/swift-evolution,rballard/swift-evolution,allevato/swift-evolution,allevato/swift-evolution,airspeedswift/swift-evolution,anandabits/swift-evolution,natecook1000/swift-evolution,jckarter/swift-evolution,anandabits/swift-evolution,jckarter/swift-evolution,apple/swift-evolution,DevAndArtist/swift-evolution,ddunbar/swift-evolution,natecook1000/swift-evolution,Nirma/swift-evolution,abertelrud/swift-evolution,Nirma/swift-evolution,ddunbar/swift-evolution,rballard/swift-evolution,abertelrud/swift-evolution,hartbit/swift-evolution