Commits

Doug Gregor committed 23fff50b699
Use UTF-16 string literals when the (builtin) string literal type supports it. Make the compiler fully support both UTF-8 and UTF-16 string literals. A (standard-library-defined) string type (such as String) that wants UTF-16 string literals should conform to the BuiltinUTF16StringLiteralConvertible protocol; one that wants UTF-8 string literals should conform to the BuiltinStringLiteralConvertible protocol. Note that BuiltinUTF16StringLiteralConvertible inherits from BuiltinStringLiteralConvertible, so a string type that wants UTF-16 string literals also has to implement support for UTF-8. The UTF-16 entry point is preferred when the compiler knows that UTF-16 is supported. This only tends to happen when we have a generic parameter that is required to conform to StringLiteralConvertible, e.g., func f<T: StringLiteralConvertible>() { var t: T = "Hello, World!" // uses UTF-8 entry point } because the UTF-8 entry point is the only one guaranteed to be available. Swift SVN r12014