Skip to content

Commit e7c8619

Browse files
committed
remove force unwrap of JNI environment
1 parent e0b3930 commit e7c8619

File tree

11 files changed

+72
-72
lines changed

11 files changed

+72
-72
lines changed

Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+NativeTranslation.swift

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -526,7 +526,7 @@ extension JNISwift2JavaGenerator {
526526
/// `value.getJValue(in:)`
527527
indirect case getJValue(NativeSwiftConversionStep)
528528

529-
/// `SwiftType(from: value, in: environment!)`
529+
/// `SwiftType(from: value, in: environment)`
530530
indirect case initFromJNI(NativeSwiftConversionStep, swiftType: SwiftType)
531531

532532
indirect case extractSwiftProtocolValue(
@@ -613,11 +613,11 @@ extension JNISwift2JavaGenerator {
613613
// TODO: Remove the _openExistential when we decide to only support language mode v6+
614614
printer.print(
615615
"""
616-
guard let \(inner)TypeMetadataPointer$ = UnsafeRawPointer(bitPattern: Int(Int64(fromJNI: \(typeMetadataVariableName), in: environment!))) else {
616+
guard let \(inner)TypeMetadataPointer$ = UnsafeRawPointer(bitPattern: Int(Int64(fromJNI: \(typeMetadataVariableName), in: environment))) else {
617617
fatalError("\(typeMetadataVariableName) memory address was null")
618618
}
619619
let \(inner)DynamicType$: Any.Type = unsafeBitCast(\(inner)TypeMetadataPointer$, to: Any.Type.self)
620-
guard let \(inner)RawPointer$ = UnsafeMutableRawPointer(bitPattern: Int(Int64(fromJNI: \(inner), in: environment!))) else {
620+
guard let \(inner)RawPointer$ = UnsafeMutableRawPointer(bitPattern: Int(Int64(fromJNI: \(inner), in: environment))) else {
621621
fatalError("\(inner) memory address was null")
622622
}
623623
#if hasFeature(ImplicitOpenExistentials)
@@ -640,7 +640,7 @@ extension JNISwift2JavaGenerator {
640640
}
641641
printer.print(
642642
"""
643-
let \(inner)Bits$ = Int(Int64(fromJNI: \(inner), in: environment!))
643+
let \(inner)Bits$ = Int(Int64(fromJNI: \(inner), in: environment))
644644
let \(pointerName) = UnsafeMutablePointer<\(swiftType)>(bitPattern: \(inner)Bits$)
645645
"""
646646
)
@@ -698,13 +698,13 @@ extension JNISwift2JavaGenerator {
698698

699699
printer.print(
700700
"""
701-
let class$ = environment!.interface.GetObjectClass(environment, \(placeholder))
702-
let methodID$ = environment!.interface.GetMethodID(environment, class$, "apply", "\(methodSignature.mangledName)")!
701+
let class$ = environment.interface.GetObjectClass(environment, \(placeholder))
702+
let methodID$ = environment.interface.GetMethodID(environment, class$, "apply", "\(methodSignature.mangledName)")!
703703
let arguments$: [jvalue] = [\(arguments.joined(separator: ", "))]
704704
"""
705705
)
706706

707-
let upcall = "environment!.interface.\(nativeResult.javaType.jniCallMethodAName)(environment, \(placeholder), methodID$, arguments$)"
707+
let upcall = "environment.interface.\(nativeResult.javaType.jniCallMethodAName)(environment, \(placeholder), methodID$, arguments$)"
708708
let result = nativeResult.conversion.render(&printer, upcall)
709709

710710
if nativeResult.javaType.isVoid {
@@ -720,7 +720,7 @@ extension JNISwift2JavaGenerator {
720720

721721
case .initializeJavaKitWrapper(let inner, let wrapperName):
722722
let inner = inner.render(&printer, placeholder)
723-
return "\(wrapperName)(javaThis: \(inner), environment: environment!)"
723+
return "\(wrapperName)(javaThis: \(inner), environment: environment)"
724724

725725
case .optionalLowering(let valueConversion, let discriminatorName, let valueName):
726726
let value = valueConversion.render(&printer, valueName)

Tests/JExtractSwiftTests/JNI/JNIAsyncTests.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -196,18 +196,18 @@ struct JNIAsyncTests {
196196
var swiftResult$: Int64!
197197
if #available(macOS 26.0, iOS 26.0, watchOS 26.0, tvOS 26.0, *) {
198198
Task.immediate {
199-
swiftResult$ = await SwiftModule.async(i: Int64(fromJNI: i, in: environment!))
199+
swiftResult$ = await SwiftModule.async(i: Int64(fromJNI: i, in: environment))
200200
_semaphore$.signal()
201201
}
202202
}
203203
else {
204204
Task {
205-
swiftResult$ = await SwiftModule.async(i: Int64(fromJNI: i, in: environment!))
205+
swiftResult$ = await SwiftModule.async(i: Int64(fromJNI: i, in: environment))
206206
_semaphore$.signal()
207207
}
208208
}
209209
_semaphore$.wait()
210-
return swiftResult$.getJNIValue(in: environment!)
210+
return swiftResult$.getJNIValue(in: environment)
211211
}
212212
"""
213213
]
@@ -261,7 +261,7 @@ struct JNIAsyncTests {
261261
@_cdecl("Java_com_example_swift_SwiftModule__00024async__J")
262262
func Java_com_example_swift_SwiftModule__00024async__J(environment: UnsafeMutablePointer<JNIEnv?>!, thisClass: jclass, c: jlong) -> jlong {
263263
assert(c != 0, "c memory address was null")
264-
let cBits$ = Int(Int64(fromJNI: c, in: environment!))
264+
let cBits$ = Int(Int64(fromJNI: c, in: environment))
265265
let c$ = UnsafeMutablePointer<MyClass>(bitPattern: cBits$)
266266
guard let c$ else {
267267
fatalError("c memory address was null in call to \\(#function)!")
@@ -284,7 +284,7 @@ struct JNIAsyncTests {
284284
let result$ = UnsafeMutablePointer<MyClass>.allocate(capacity: 1)
285285
result$.initialize(to: swiftResult$)
286286
let resultBits$ = Int64(Int(bitPattern: result$))
287-
return resultBits$.getJNIValue(in: environment!)
287+
return resultBits$.getJNIValue(in: environment)
288288
}
289289
"""
290290
]

Tests/JExtractSwiftTests/JNI/JNIClassTests.swift

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -221,9 +221,9 @@ struct JNIClassTests {
221221
@_cdecl("Java_com_example_swift_MyClass__00024init__JJ")
222222
func Java_com_example_swift_MyClass__00024init__JJ(environment: UnsafeMutablePointer<JNIEnv?>!, thisClass: jclass, x: jlong, y: jlong) -> jlong {
223223
let result$ = UnsafeMutablePointer<MyClass>.allocate(capacity: 1)
224-
result$.initialize(to: MyClass.init(x: Int64(fromJNI: x, in: environment!), y: Int64(fromJNI: y, in: environment!)))
224+
result$.initialize(to: MyClass.init(x: Int64(fromJNI: x, in: environment), y: Int64(fromJNI: y, in: environment)))
225225
let resultBits$ = Int64(Int(bitPattern: result$))
226-
return resultBits$.getJNIValue(in: environment!)
226+
return resultBits$.getJNIValue(in: environment)
227227
}
228228
""",
229229
"""
@@ -232,7 +232,7 @@ struct JNIClassTests {
232232
let result$ = UnsafeMutablePointer<MyClass>.allocate(capacity: 1)
233233
result$.initialize(to: MyClass.init())
234234
let resultBits$ = Int64(Int(bitPattern: result$))
235-
return resultBits$.getJNIValue(in: environment!)
235+
return resultBits$.getJNIValue(in: environment)
236236
}
237237
""",
238238
]
@@ -303,12 +303,12 @@ struct JNIClassTests {
303303
@_cdecl("Java_com_example_swift_MyClass__00024doSomething__JJ")
304304
func Java_com_example_swift_MyClass__00024doSomething__JJ(environment: UnsafeMutablePointer<JNIEnv?>!, thisClass: jclass, x: jlong, self: jlong) {
305305
assert(self != 0, "self memory address was null")
306-
let selfBits$ = Int(Int64(fromJNI: self, in: environment!))
306+
let selfBits$ = Int(Int64(fromJNI: self, in: environment))
307307
let self$ = UnsafeMutablePointer<MyClass>(bitPattern: selfBits$)
308308
guard let self$ else {
309309
fatalError("self memory address was null in call to \\(#function)!")
310310
}
311-
self$.pointee.doSomething(x: Int64(fromJNI: x, in: environment!))
311+
self$.pointee.doSomething(x: Int64(fromJNI: x, in: environment))
312312
}
313313
"""
314314
]
@@ -352,15 +352,15 @@ struct JNIClassTests {
352352
@_cdecl("Java_com_example_swift_MyClass__00024copy__J")
353353
func Java_com_example_swift_MyClass__00024copy__J(environment: UnsafeMutablePointer<JNIEnv?>!, thisClass: jclass, self: jlong) -> jlong {
354354
assert(self != 0, "self memory address was null")
355-
let selfBits$ = Int(Int64(fromJNI: self, in: environment!))
355+
let selfBits$ = Int(Int64(fromJNI: self, in: environment))
356356
let self$ = UnsafeMutablePointer<MyClass>(bitPattern: selfBits$)
357357
guard let self$ else {
358358
fatalError("self memory address was null in call to \\(#function)!")
359359
}
360360
let result$ = UnsafeMutablePointer<MyClass>.allocate(capacity: 1)
361361
result$.initialize(to: self$.pointee.copy())
362362
let resultBits$ = Int64(Int(bitPattern: result$))
363-
return resultBits$.getJNIValue(in: environment!)
363+
return resultBits$.getJNIValue(in: environment)
364364
}
365365
"""
366366
]
@@ -404,18 +404,18 @@ struct JNIClassTests {
404404
@_cdecl("Java_com_example_swift_MyClass__00024isEqual__JJ")
405405
func Java_com_example_swift_MyClass__00024isEqual__JJ(environment: UnsafeMutablePointer<JNIEnv?>!, thisClass: jclass, other: jlong, self: jlong) -> jboolean {
406406
assert(other != 0, "other memory address was null")
407-
let otherBits$ = Int(Int64(fromJNI: other, in: environment!))
407+
let otherBits$ = Int(Int64(fromJNI: other, in: environment))
408408
let other$ = UnsafeMutablePointer<MyClass>(bitPattern: otherBits$)
409409
guard let other$ else {
410410
fatalError("other memory address was null in call to \\(#function)!")
411411
}
412412
assert(self != 0, "self memory address was null")
413-
let selfBits$ = Int(Int64(fromJNI: self, in: environment!))
413+
let selfBits$ = Int(Int64(fromJNI: self, in: environment))
414414
let self$ = UnsafeMutablePointer<MyClass>(bitPattern: selfBits$)
415415
guard let self$ else {
416416
fatalError("self memory address was null in call to \\(#function)!")
417417
}
418-
return self$.pointee.isEqual(to: other$.pointee).getJNIValue(in: environment!)
418+
return self$.pointee.isEqual(to: other$.pointee).getJNIValue(in: environment)
419419
}
420420
"""
421421
]

Tests/JExtractSwiftTests/JNI/JNIClosureTests.swift

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,10 @@ struct JNIClosureTests {
6363
@_cdecl("Java_com_example_swift_SwiftModule__00024emptyClosure__Lcom_example_swift_SwiftModule_00024emptyClosure_00024closure_2")
6464
func Java_com_example_swift_SwiftModule__00024emptyClosure__Lcom_example_swift_SwiftModule_00024emptyClosure_00024closure_2(environment: UnsafeMutablePointer<JNIEnv?>!, thisClass: jclass, closure: jobject?) {
6565
SwiftModule.emptyClosure(closure: {
66-
let class$ = environment!.interface.GetObjectClass(environment, closure)
67-
let methodID$ = environment!.interface.GetMethodID(environment, class$, "apply", "()V")!
66+
let class$ = environment.interface.GetObjectClass(environment, closure)
67+
let methodID$ = environment.interface.GetMethodID(environment, class$, "apply", "()V")!
6868
let arguments$: [jvalue] = []
69-
environment!.interface.CallVoidMethodA(environment, closure, methodID$, arguments$)
69+
environment.interface.CallVoidMethodA(environment, closure, methodID$, arguments$)
7070
}
7171
)
7272
}
@@ -115,10 +115,10 @@ struct JNIClosureTests {
115115
@_cdecl("Java_com_example_swift_SwiftModule__00024closureWithArgumentsAndReturn__Lcom_example_swift_SwiftModule_00024closureWithArgumentsAndReturn_00024closure_2")
116116
func Java_com_example_swift_SwiftModule__00024closureWithArgumentsAndReturn__Lcom_example_swift_SwiftModule_00024closureWithArgumentsAndReturn_00024closure_2(environment: UnsafeMutablePointer<JNIEnv?>!, thisClass: jclass, closure: jobject?) {
117117
SwiftModule.closureWithArgumentsAndReturn(closure: { _0, _1 in
118-
let class$ = environment!.interface.GetObjectClass(environment, closure)
119-
let methodID$ = environment!.interface.GetMethodID(environment, class$, "apply", "(JZ)J")!
120-
let arguments$: [jvalue] = [_0.getJValue(in: environment!), _1.getJValue(in: environment!)]
121-
return Int64(fromJNI: environment!.interface.CallLongMethodA(environment, closure, methodID$, arguments$), in: environment!)
118+
let class$ = environment.interface.GetObjectClass(environment, closure)
119+
let methodID$ = environment.interface.GetMethodID(environment, class$, "apply", "(JZ)J")!
120+
let arguments$: [jvalue] = [_0.getJValue(in: environment), _1.getJValue(in: environment)]
121+
return Int64(fromJNI: environment.interface.CallLongMethodA(environment, closure, methodID$, arguments$), in: environment)
122122
}
123123
)
124124
}

Tests/JExtractSwiftTests/JNI/JNIEnumTests.swift

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -224,25 +224,25 @@ struct JNIEnumTests {
224224
let result$ = UnsafeMutablePointer<MyEnum>.allocate(capacity: 1)
225225
result$.initialize(to: MyEnum.first)
226226
let resultBits$ = Int64(Int(bitPattern: result$))
227-
return resultBits$.getJNIValue(in: environment!)
227+
return resultBits$.getJNIValue(in: environment)
228228
}
229229
""",
230230
"""
231231
@_cdecl("Java_com_example_swift_MyEnum__00024second__Ljava_lang_String_2")
232232
func Java_com_example_swift_MyEnum__00024second__Ljava_lang_String_2(environment: UnsafeMutablePointer<JNIEnv?>!, thisClass: jclass, arg0: jstring?) -> jlong {
233233
let result$ = UnsafeMutablePointer<MyEnum>.allocate(capacity: 1)
234-
result$.initialize(to: MyEnum.second(String(fromJNI: arg0, in: environment!)))
234+
result$.initialize(to: MyEnum.second(String(fromJNI: arg0, in: environment)))
235235
let resultBits$ = Int64(Int(bitPattern: result$))
236-
return resultBits$.getJNIValue(in: environment!)
236+
return resultBits$.getJNIValue(in: environment)
237237
}
238238
""",
239239
"""
240240
@_cdecl("Java_com_example_swift_MyEnum__00024third__JI")
241241
func Java_com_example_swift_MyEnum__00024third__JI(environment: UnsafeMutablePointer<JNIEnv?>!, thisClass: jclass, x: jlong, y: jint) -> jlong {
242242
let result$ = UnsafeMutablePointer<MyEnum>.allocate(capacity: 1)
243-
result$.initialize(to: MyEnum.third(x: Int64(fromJNI: x, in: environment!), y: Int32(fromJNI: y, in: environment!)))
243+
result$.initialize(to: MyEnum.third(x: Int64(fromJNI: x, in: environment), y: Int32(fromJNI: y, in: environment)))
244244
let resultBits$ = Int64(Int(bitPattern: result$))
245-
return resultBits$.getJNIValue(in: environment!)
245+
return resultBits$.getJNIValue(in: environment)
246246
}
247247
"""
248248
])
@@ -302,7 +302,7 @@ struct JNIEnumTests {
302302
let class$ = cache$.javaClass
303303
let method$ = _JNIMethodIDCache.Method(name: "<init>", signature: "(Ljava/lang/String;)V")
304304
let constructorID$ = cache$[method$]
305-
return withVaList([_0.getJNIValue(in: environment!) ?? 0]) {
305+
return withVaList([_0.getJNIValue(in: environment) ?? 0]) {
306306
return environment.interface.NewObjectV(environment, class$, constructorID$, $0)
307307
}
308308
}
@@ -318,7 +318,7 @@ struct JNIEnumTests {
318318
let class$ = cache$.javaClass
319319
let method$ = _JNIMethodIDCache.Method(name: "<init>", signature: "(JI)V")
320320
let constructorID$ = cache$[method$]
321-
return withVaList([x.getJNIValue(in: environment!), y.getJNIValue(in: environment!)]) {
321+
return withVaList([x.getJNIValue(in: environment), y.getJNIValue(in: environment)]) {
322322
return environment.interface.NewObjectV(environment, class$, constructorID$, $0)
323323
}
324324
}

Tests/JExtractSwiftTests/JNI/JNIJavaKitTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ struct JNIJavaKitTests {
7171
guard let javaInteger_unwrapped$ = javaInteger else {
7272
fatalError("javaInteger was null in call to \\(#function), but Swift requires non-optional!")
7373
}
74-
SwiftModule.function(javaLong: JavaLong(javaThis: javaLong_unwrapped$, environment: environment!), javaInteger: JavaInteger(javaThis: javaInteger_unwrapped$, environment: environment!), int: Int64(fromJNI: int, in: environment!))
74+
SwiftModule.function(javaLong: JavaLong(javaThis: javaLong_unwrapped$, environment: environment), javaInteger: JavaInteger(javaThis: javaInteger_unwrapped$, environment: environment), int: Int64(fromJNI: int, in: environment))
7575
}
7676
"""
7777
]

Tests/JExtractSwiftTests/JNI/JNIModuleTests.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,13 +130,13 @@ struct JNIModuleTests {
130130
"""
131131
@_cdecl("Java_com_example_swift_SwiftModule__00024takeIntegers__BSIJ")
132132
func Java_com_example_swift_SwiftModule__00024takeIntegers__BSIJ(environment: UnsafeMutablePointer<JNIEnv?>!, thisClass: jclass, i1: jbyte, i2: jshort, i3: jint, i4: jlong) -> jchar {
133-
return SwiftModule.takeIntegers(i1: Int8(fromJNI: i1, in: environment!), i2: Int16(fromJNI: i2, in: environment!), i3: Int32(fromJNI: i3, in: environment!), i4: Int64(fromJNI: i4, in: environment!)).getJNIValue(in: environment!)
133+
return SwiftModule.takeIntegers(i1: Int8(fromJNI: i1, in: environment), i2: Int16(fromJNI: i2, in: environment), i3: Int32(fromJNI: i3, in: environment), i4: Int64(fromJNI: i4, in: environment)).getJNIValue(in: environment)
134134
}
135135
""",
136136
"""
137137
@_cdecl("Java_com_example_swift_SwiftModule__00024otherPrimitives__ZFD")
138138
func Java_com_example_swift_SwiftModule__00024otherPrimitives__ZFD(environment: UnsafeMutablePointer<JNIEnv?>!, thisClass: jclass, b: jboolean, f: jfloat, d: jdouble) {
139-
SwiftModule.otherPrimitives(b: Bool(fromJNI: b, in: environment!), f: Float(fromJNI: f, in: environment!), d: Double(fromJNI: d, in: environment!))
139+
SwiftModule.otherPrimitives(b: Bool(fromJNI: b, in: environment), f: Float(fromJNI: f, in: environment), d: Double(fromJNI: d, in: environment))
140140
}
141141
"""
142142
]
@@ -179,7 +179,7 @@ struct JNIModuleTests {
179179
"""
180180
@_cdecl("Java_com_example_swift_SwiftModule__00024copy__Ljava_lang_String_2")
181181
func Java_com_example_swift_SwiftModule__00024copy__Ljava_lang_String_2(environment: UnsafeMutablePointer<JNIEnv?>!, thisClass: jclass, string: jstring?) -> jstring? {
182-
return SwiftModule.copy(String(fromJNI: string, in: environment!)).getJNIValue(in: environment!)
182+
return SwiftModule.copy(String(fromJNI: string, in: environment)).getJNIValue(in: environment)
183183
}
184184
""",
185185
]
@@ -247,7 +247,7 @@ struct JNIModuleTests {
247247
@_cdecl("Java_com_example_swift_SwiftModule__00024methodB__")
248248
func Java_com_example_swift_SwiftModule__00024methodB__(environment: UnsafeMutablePointer<JNIEnv?>!, thisClass: jclass) -> jlong {
249249
do {
250-
return try SwiftModule.methodB().getJNIValue(in: environment!)
250+
return try SwiftModule.methodB().getJNIValue(in: environment)
251251
} catch {
252252
environment.throwAsException(error)
253253
return Int64.jniPlaceholderValue

0 commit comments

Comments
 (0)