File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -1319,6 +1319,7 @@ extension JNISwift2JavaGenerator {
13191319
13201320 let existentialType = SwiftKitPrinting . renderExistentialType ( protocolTypes)
13211321
1322+ // TODO: Remove the _openExistential when we decide to only support language mode v6+
13221323 printer. print (
13231324 """
13241325 guard let \( inner) TypeMetadataPointer$ = UnsafeRawPointer(bitPattern: Int(Int64(fromJNI: \( typeMetadataVariableName) , in: environment))) else {
@@ -1328,7 +1329,14 @@ extension JNISwift2JavaGenerator {
13281329 guard let \( inner) RawPointer$ = UnsafeMutableRawPointer(bitPattern: Int(Int64(fromJNI: \( inner) , in: environment))) else {
13291330 fatalError( " \( inner) memory address was null " )
13301331 }
1332+ #if hasFeature(ImplicitOpenExistentials)
13311333 let \( existentialName) = \( inner) RawPointer$.load(as: \( inner) DynamicType$) as! \( existentialType)
1334+ #else
1335+ func \( inner) DoLoad<Ty>(_ ty: Ty.Type) -> \( existentialType) {
1336+ \( inner) RawPointer$.load(as: ty) as! \( existentialType)
1337+ }
1338+ let \( existentialName) = _openExistential( \( inner) DynamicType$, do: \( inner) DoLoad)
1339+ #endif
13321340 """
13331341 )
13341342 return existentialName
Original file line number Diff line number Diff line change @@ -140,7 +140,14 @@ struct JNIProtocolTests {
140140 guard let xpointer$RawPointer$ = UnsafeMutableRawPointer(bitPattern: Int(Int64(fromJNI: xpointer$, in: environment))) else {
141141 fatalError( " xpointer$ memory address was null " )
142142 }
143+ #if hasFeature(ImplicitOpenExistentials)
143144 let xpointer$Existential$ = xpointer$RawPointer$.load(as: xpointer$DynamicType$) as! (any SomeProtocol)
145+ #else
146+ func xpointer$DoLoad<Ty>(_ ty: Ty.Type) -> (any SomeProtocol) {
147+ xpointer$RawPointer$.load(as: ty) as! (any SomeProtocol)
148+ }
149+ let xpointer$Existential$ = _openExistential(xpointer$DynamicType$, do: xpointer$DoLoad)
150+ #endif
144151 xswiftObject$ = xpointer$Existential$
145152 }
146153 else {
@@ -271,7 +278,14 @@ struct JNIProtocolTests {
271278 guard let xpointer$RawPointer$ = UnsafeMutableRawPointer(bitPattern: Int(Int64(fromJNI: xpointer$, in: environment))) else {
272279 fatalError( " xpointer$ memory address was null " )
273280 }
281+ #if hasFeature(ImplicitOpenExistentials)
274282 let xpointer$Existential$ = xpointer$RawPointer$.load(as: xpointer$DynamicType$) as! (any (SomeProtocol & B))
283+ #else
284+ func xpointer$DoLoad<Ty>(_ ty: Ty.Type) -> (any (SomeProtocol & B)) {
285+ xpointer$RawPointer$.load(as: ty) as! (any (SomeProtocol & B))
286+ }
287+ let xpointer$Existential$ = _openExistential(xpointer$DynamicType$, do: xpointer$DoLoad)
288+ #endif
275289 xswiftObject$ = xpointer$Existential$
276290 }
277291 else {
You can’t perform that action at this time.
0 commit comments