Skip to content

Commit 1f6c402

Browse files
committed
Revert "Remove #if hasFeature(ImplicitOpenExistentials) block"
This reverts commit 73f1f68.
1 parent 0df5060 commit 1f6c402

2 files changed

Lines changed: 22 additions & 0 deletions

File tree

Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+NativeTranslation.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff 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

Tests/JExtractSwiftTests/JNI/JNIProtocolTests.swift

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff 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 {

0 commit comments

Comments
 (0)