@@ -131,6 +131,10 @@ static void addCppExtensionsToStdlibType(const NominalTypeDecl *typeDecl,
131
131
cPrologueOS << " SWIFT_EXTERN void *_Nonnull "
132
132
" $sSS10FoundationE19_bridgeToObjectiveCSo8NSStringCyF(swift_interop_stub_"
133
133
" Swift_String) SWIFT_NOEXCEPT SWIFT_CALL;\n " ;
134
+ cPrologueOS << " SWIFT_EXTERN swift_interop_stub_Swift_String "
135
+ " $sSS10FoundationE36_"
136
+ " unconditionallyBridgeFromObjectiveCySSSo8NSStringCSgFZ("
137
+ " void * _Nullable) SWIFT_NOEXCEPT SWIFT_CALL;\n " ;
134
138
printer.printObjCBlock ([](raw_ostream &os) {
135
139
os << " " ;
136
140
ClangSyntaxPrinter (os).printInlineForThunk ();
@@ -139,6 +143,17 @@ static void addCppExtensionsToStdlibType(const NominalTypeDecl *typeDecl,
139
143
" *)(_impl::$sSS10FoundationE19_bridgeToObjectiveCSo8NSStringCyF(_impl::swift_interop_"
140
144
" passDirect_Swift_String(_getOpaquePointer())));\n " ;
141
145
os << " }\n " ;
146
+ os << " static " ;
147
+ ClangSyntaxPrinter (os).printInlineForThunk ();
148
+ os << " String init(NSString * _Nonnull nsString) noexcept {\n " ;
149
+ os << " auto result = _make();\n " ;
150
+ os << " auto res = "
151
+ " _impl::$sSS10FoundationE36_"
152
+ " unconditionallyBridgeFromObjectiveCySSSo8NSStringCSgFZ((__bridge "
153
+ " void *)nsString);\n " ;
154
+ os << " memcpy(result._getOpaquePointer(), &res, sizeof(res));\n " ;
155
+ os << " return result;\n " ;
156
+ os << " }\n " ;
142
157
});
143
158
} else if (typeDecl == typeDecl->getASTContext ().getOptionalDecl ()) {
144
159
// Add additional methods for the `Optional` declaration.
0 commit comments