Factor out the hack that uses the existing type-coercion logic to convert an expression to a given type.
Factor out the hack that uses the existing type-coercion logic to
convert an expression to a given type.


Swift SVN r2834

parkera/swift,practicalswift/swift,glessard/swift,alblue/swift,ken0nek/swift,aschwaighofer/swift,apple/swift,atrick/swift,natecook1000/swift,shahmishal/swift,gottesmm/swift,harlanhaskins/swift,jopamer/swift,slavapestov/swift,KrishMunot/swift,OscarSwanros/swift,emilstahl/swift,amraboelela/swift,roambotics/swift,LeoShimonaka/swift,apple/swift,LeoShimonaka/swift,nathawes/swift,practicalswift/swift,emilstahl/swift,xedin/swift,glessard/swift,LeoShimonaka/swift,kperryua/swift,hooman/swift,deyton/swift,glessard/swift,danielmartin/swift,johnno1962d/swift,Ivacker/swift,khizkhiz/swift,brentdax/swift,kentya6/swift,tkremenek/swift,jopamer/swift,amraboelela/swift,uasys/swift,JaSpa/swift,Jnosh/swift,tardieu/swift,djwbrown/swift,shahmishal/swift,devincoughlin/swift,felix91gr/swift,bitjammer/swift,xwu/swift,jmgc/swift,johnno1962d/swift,swiftix/swift.old,return/swift,Jnosh/swift,emilstahl/swift,therealbnut/swift,atrick/swift,brentdax/swift,djwbrown/swift,rudkx/swift,uasys/swift,therealbnut/swift,gmilos/swift,harlanhaskins/swift,russbishop/swift,khizkhiz/swift,xwu/swift,manavgabhawala/swift,mightydeveloper/swift,airspeedswift/swift,gribozavr/swift,alblue/swift,swiftix/swift,natecook1000/swift,rudkx/swift,johnno1962d/swift,ken0nek/swift,modocache/swift,adrfer/swift,russbishop/swift,rudkx/swift,djwbrown/swift,OscarSwanros/swift,ben-ng/swift,tjw/swift,gmilos/swift,aschwaighofer/swift,swiftix/swift.old,sschiau/swift,JGiola/swift,ben-ng/swift,benlangmuir/swift,adrfer/swift,kstaring/swift,djwbrown/swift,frootloops/swift,kstaring/swift,arvedviehweger/swift,hughbe/swift,dduan/swift,arvedviehweger/swift,huonw/swift,therealbnut/swift,kstaring/swift,lorentey/swift,glessard/swift,kentya6/swift,shajrawi/swift,codestergit/swift,Ivacker/swift,kperryua/swift,CodaFi/swift,ben-ng/swift,adrfer/swift,lorentey/swift,modocache/swift,kperryua/swift,tjw/swift,mightydeveloper/swift,practicalswift/swift,tardieu/swift,shajrawi/swift,tinysun212/swift-windows,stephentyrone/swift,cbrentharris/swift,stephentyrone/swift,swiftix/swift.old,swiftix/swift,shajrawi/swift,ahoppen/swift,arvedviehweger/swift,shahmishal/swift,xwu/swift,johnno1962d/swift,devincoughlin/swift,practicalswift/swift,tjw/swift,lorentey/swift,frootloops/swift,gribozavr/swift,calebd/swift,johnno1962d/swift,JaSpa/swift,modocache/swift,tardieu/swift,cbrentharris/swift,allevato/swift,therealbnut/swift,roambotics/swift,harlanhaskins/swift,uasys/swift,milseman/swift,khizkhiz/swift,kusl/swift,russbishop/swift,austinzheng/swift,KrishMunot/swift,bitjammer/swift,benlangmuir/swift,huonw/swift,JGiola/swift,atrick/swift,kstaring/swift,CodaFi/swift,djwbrown/swift,allevato/swift,danielmartin/swift,uasys/swift,ken0nek/swift,SwiftAndroid/swift,johnno1962d/swift,ken0nek/swift,gribozavr/swift,arvedviehweger/swift,kusl/swift,MukeshKumarS/Swift,return/swift,IngmarStein/swift,hughbe/swift,khizkhiz/swift,devincoughlin/swift,ahoppen/swift,therealbnut/swift,kperryua/swift,JaSpa/swift,kentya6/swift,CodaFi/swift,OscarSwanros/swift,gmilos/swift,ben-ng/swift,milseman/swift,return/swift,hughbe/swift,tinysun212/swift-windows,karwa/swift,parkera/swift,return/swift,KrishMunot/swift,glessard/swift,tkremenek/swift,nathawes/swift,austinzheng/swift,CodaFi/swift,jmgc/swift,sschiau/swift,dduan/swift,frootloops/swift,rudkx/swift,gmilos/swift,jtbandes/swift,KrishMunot/swift,LeoShimonaka/swift,airspeedswift/swift,russbishop/swift,deyton/swift,xwu/swift,gregomni/swift,jtbandes/swift,zisko/swift,ben-ng/swift,xwu/swift,jtbandes/swift,swiftix/swift.old,arvedviehweger/swift,mightydeveloper/swift,devincoughlin/swift,calebd/swift,SwiftAndroid/swift,zisko/swift,calebd/swift,codestergit/swift,rudkx/swift,nathawes/swift,stephentyrone/swift,JaSpa/swift,sdulal/swift,tardieu/swift,MukeshKumarS/Swift,huonw/swift,therealbnut/swift,dreamsxin/swift,karwa/swift,amraboelela/swift,Ivacker/swift,calebd/swift,uasys/swift,IngmarStein/swift,roambotics/swift,bitjammer/swift,gottesmm/swift,xedin/swift,jckarter/swift,uasys/swift,JaSpa/swift,khizkhiz/swift,roambotics/swift,KrishMunot/swift,adrfer/swift,aschwaighofer/swift,MukeshKumarS/Swift,kentya6/swift,deyton/swift,Jnosh/swift,kperryua/swift,sschiau/swift,jmgc/swift,stephentyrone/swift,devincoughlin/swift,airspeedswift/swift,karwa/swift,emilstahl/swift,devincoughlin/swift,shahmishal/swift,frootloops/swift,modocache/swift,xedin/swift,JaSpa/swift,zisko/swift,natecook1000/swift,IngmarStein/swift,return/swift,zisko/swift,airspeedswift/swift,cbrentharris/swift,swiftix/swift,OscarSwanros/swift,KrishMunot/swift,huonw/swift,apple/swift,IngmarStein/swift,harlanhaskins/swift,dduan/swift,Jnosh/swift,kentya6/swift,gottesmm/swift,sschiau/swift,hooman/swift,austinzheng/swift,natecook1000/swift,amraboelela/swift,OscarSwanros/swift,gottesmm/swift,milseman/swift,Ivacker/swift,jckarter/swift,shajrawi/swift,kstaring/swift,huonw/swift,sdulal/swift,manavgabhawala/swift,practicalswift/swift,SwiftAndroid/swift,parkera/swift,sdulal/swift,lorentey/swift,milseman/swift,danielmartin/swift,practicalswift/swift,emilstahl/swift,sdulal/swift,frootloops/swift,tjw/swift,practicalswift/swift,swiftix/swift.old,jmgc/swift,IngmarStein/swift,benlangmuir/swift,manavgabhawala/swift,shahmishal/swift,benlangmuir/swift,xwu/swift,Jnosh/swift,alblue/swift,gregomni/swift,zisko/swift,felix91gr/swift,kusl/swift,manavgabhawala/swift,rudkx/swift,stephentyrone/swift,huonw/swift,calebd/swift,nathawes/swift,shajrawi/swift,nathawes/swift,mightydeveloper/swift,deyton/swift,aschwaighofer/swift,sdulal/swift,nathawes/swift,felix91gr/swift,gottesmm/swift,gregomni/swift,apple/swift,manavgabhawala/swift,roambotics/swift,kusl/swift,calebd/swift,Jnosh/swift,glessard/swift,apple/swift,mightydeveloper/swift,aschwaighofer/swift,swiftix/swift,jmgc/swift,Ivacker/swift,zisko/swift,harlanhaskins/swift,johnno1962d/swift,gregomni/swift,Ivacker/swift,hughbe/swift,ahoppen/swift,stephentyrone/swift,shajrawi/swift,parkera/swift,frootloops/swift,hughbe/swift,aschwaighofer/swift,felix91gr/swift,lorentey/swift,slavapestov/swift,hughbe/swift,emilstahl/swift,danielmartin/swift,jopamer/swift,return/swift,sschiau/swift,devincoughlin/swift,modocache/swift,JaSpa/swift,calebd/swift,CodaFi/swift,emilstahl/swift,kstaring/swift,bitjammer/swift,slavapestov/swift,jtbandes/swift,swiftix/swift,LeoShimonaka/swift,tinysun212/swift-windows,bitjammer/swift,tardieu/swift,parkera/swift,adrfer/swift,bitjammer/swift,shajrawi/swift,gottesmm/swift,atrick/swift,mightydeveloper/swift,IngmarStein/swift,JGiola/swift,slavapestov/swift,amraboelela/swift,alblue/swift,tkremenek/swift,gmilos/swift,ahoppen/swift,cbrentharris/swift,CodaFi/swift,atrick/swift,kentya6/swift,khizkhiz/swift,cbrentharris/swift,slavapestov/swift,jckarter/swift,hughbe/swift,uasys/swift,zisko/swift,parkera/swift,shahmishal/swift,kperryua/swift,gribozavr/swift,ken0nek/swift,amraboelela/swift,allevato/swift,milseman/swift,JGiola/swift,kstaring/swift,tjw/swift,ahoppen/swift,airspeedswift/swift,practicalswift/swift,alblue/swift,gregomni/swift,codestergit/swift,aschwaighofer/swift,ahoppen/swift,xedin/swift,nathawes/swift,gribozavr/swift,stephentyrone/swift,danielmartin/swift,russbishop/swift,brentdax/swift,austinzheng/swift,tjw/swift,airspeedswift/swift,tkremenek/swift,modocache/swift,russbishop/swift,codestergit/swift,tkremenek/swift,parkera/swift,allevato/swift,allevato/swift,felix91gr/swift,tinysun212/swift-windows,arvedviehweger/swift,russbishop/swift,karwa/swift,tkremenek/swift,jopamer/swift,felix91gr/swift,hooman/swift,frootloops/swift,jopamer/swift,deyton/swift,danielmartin/swift,kusl/swift,SwiftAndroid/swift,gmilos/swift,MukeshKumarS/Swift,xedin/swift,slavapestov/swift,jmgc/swift,harlanhaskins/swift,djwbrown/swift,allevato/swift,tkremenek/swift,JGiola/swift,Jnosh/swift,hooman/swift,tinysun212/swift-windows,austinzheng/swift,benlangmuir/swift,jmgc/swift,codestergit/swift,adrfer/swift,sschiau/swift,MukeshKumarS/Swift,natecook1000/swift,adrfer/swift,sdulal/swift,austinzheng/swift,jopamer/swift,shahmishal/swift,sdulal/swift,kperryua/swift,swiftix/swift.old,xedin/swift,LeoShimonaka/swift,airspeedswift/swift,swiftix/swift.old,swiftix/swift,KrishMunot/swift,kusl/swift,lorentey/swift,natecook1000/swift,devincoughlin/swift,codestergit/swift,shahmishal/swift,LeoShimonaka/swift,sdulal/swift,Ivacker/swift,jckarter/swift,jckarter/swift,CodaFi/swift,LeoShimonaka/swift,deyton/swift,tardieu/swift,gribozavr/swift,ken0nek/swift,OscarSwanros/swift,modocache/swift,karwa/swift,jckarter/swift,apple/swift,dduan/swift,ben-ng/swift,harlanhaskins/swift,SwiftAndroid/swift,tinysun212/swift-windows,hooman/swift,felix91gr/swift,gottesmm/swift,JGiola/swift,sschiau/swift,sschiau/swift,shajrawi/swift,jckarter/swift,hooman/swift,gribozavr/swift,dreamsxin/swift,cbrentharris/swift,roambotics/swift,gmilos/swift,cbrentharris/swift,gribozavr/swift,ken0nek/swift,milseman/swift,arvedviehweger/swift,mightydeveloper/swift,karwa/swift,manavgabhawala/swift,karwa/swift,alblue/swift,brentdax/swift,lorentey/swift,austinzheng/swift,jtbandes/swift,alblue/swift,mightydeveloper/swift,emilstahl/swift,huonw/swift,kusl/swift,parkera/swift,MukeshKumarS/Swift,natecook1000/swift,atrick/swift,jopamer/swift,SwiftAndroid/swift,jtbandes/swift,ben-ng/swift,OscarSwanros/swift,slavapestov/swift,allevato/swift,tjw/swift,codestergit/swift,benlangmuir/swift,xedin/swift,xedin/swift,kusl/swift,lorentey/swift,deyton/swift,tinysun212/swift-windows,swiftix/swift.old,bitjammer/swift,brentdax/swift,dduan/swift,kentya6/swift,tardieu/swift,manavgabhawala/swift,gregomni/swift,karwa/swift,dduan/swift,amraboelela/swift,kentya6/swift,swiftix/swift,danielmartin/swift,milseman/swift,SwiftAndroid/swift,djwbrown/swift,therealbnut/swift,MukeshKumarS/Swift,brentdax/swift,brentdax/swift,jtbandes/swift,return/swift,xwu/swift,Ivacker/swift,IngmarStein/swift,khizkhiz/swift,dduan/swift,cbrentharris/swift,hooman/swift