From 25a0379b100d09cb27111cfff05c4a0d9077c4fd Mon Sep 17 00:00:00 2001 From: rayman-zhao Date: Sat, 24 Oct 2026 21:43:19 +0800 Subject: [PATCH 1/2] wrap-java: translate Java byte[] as [UInt8] A Java byte[] is a byte buffer, and Swift's idiomatic buffer element type is UInt8; the export direction already maps UInt8 to byte and the JNI bridge has a fast path for both element types. Mapping byte[] to [Int8] forced every wrap-java consumer to convert buffers element-type-only, adding an allocation and memcpy per boundary call. Scalar byte stays Int8, matching Java's signed byte. Source-breaking: Swift signatures involving byte[] change from [Int8] to [UInt8]. Regenerated affected wrappers. --- .../generated/BufferedInputStream.swift | 2 +- .../JavaUtil/generated/BitSet.swift | 4 +- .../generated/JarInputStream.swift | 2 +- .../JavaUtilJar/generated/ZipEntry.swift | 4 +- Sources/SwiftJava/generated/ByteBuffer.swift | 22 +++++----- Sources/SwiftJava/generated/InputStream.swift | 10 ++--- .../SwiftJava/generated/JavaClassLoader.swift | 4 +- Sources/SwiftJava/generated/JavaString.swift | 24 +++++------ .../SwiftJava/generated/OutputStream.swift | 4 +- Sources/SwiftJavaToolLib/JavaTranslator.swift | 6 ++- .../Java2SwiftTests.swift | 43 ++++++++++++++++++- 11 files changed, 85 insertions(+), 40 deletions(-) diff --git a/Sources/JavaStdlib/JavaIO/generated/BufferedInputStream.swift b/Sources/JavaStdlib/JavaIO/generated/BufferedInputStream.swift index 081016135..454bb83fc 100644 --- a/Sources/JavaStdlib/JavaIO/generated/BufferedInputStream.swift +++ b/Sources/JavaStdlib/JavaIO/generated/BufferedInputStream.swift @@ -62,7 +62,7 @@ open class BufferedInputStream: InputStream { /// public synchronized int java.io.BufferedInputStream.read(byte[],int,int) throws java.io.IOException /// ``` @JavaMethod - open override func read(_ arg0: [Int8], _ arg1: Int32, _ arg2: Int32) throws -> Int32 + open override func read(_ arg0: [UInt8], _ arg1: Int32, _ arg2: Int32) throws -> Int32 /// Java method `reset`. /// diff --git a/Sources/JavaStdlib/JavaUtil/generated/BitSet.swift b/Sources/JavaStdlib/JavaUtil/generated/BitSet.swift index f5f663f1d..0a59ce2c0 100644 --- a/Sources/JavaStdlib/JavaUtil/generated/BitSet.swift +++ b/Sources/JavaStdlib/JavaUtil/generated/BitSet.swift @@ -10,7 +10,7 @@ extension JavaClass { /// public static java.util.BitSet java.util.BitSet.valueOf(byte[]) /// ``` @JavaStaticMethod - public func valueOf(_ arg0: [Int8]) -> BitSet! + public func valueOf(_ arg0: [UInt8]) -> BitSet! /// Java method `valueOf`. /// @@ -252,7 +252,7 @@ open class BitSet: JavaObject { /// public byte[] java.util.BitSet.toByteArray() /// ``` @JavaMethod - open func toByteArray() -> [Int8] + open func toByteArray() -> [UInt8] /// Java method `toLongArray`. /// diff --git a/Sources/JavaStdlib/JavaUtilJar/generated/JarInputStream.swift b/Sources/JavaStdlib/JavaUtilJar/generated/JarInputStream.swift index 445570ac8..d62deb80f 100644 --- a/Sources/JavaStdlib/JavaUtilJar/generated/JarInputStream.swift +++ b/Sources/JavaStdlib/JavaUtilJar/generated/JarInputStream.swift @@ -53,5 +53,5 @@ open class JarInputStream: InputStream { /// public int java.util.jar.JarInputStream.read(byte[],int,int) throws java.io.IOException /// ``` @JavaMethod - open override func read(_ arg0: [Int8], _ arg1: Int32, _ arg2: Int32) throws -> Int32 + open override func read(_ arg0: [UInt8], _ arg1: Int32, _ arg2: Int32) throws -> Int32 } diff --git a/Sources/JavaStdlib/JavaUtilJar/generated/ZipEntry.swift b/Sources/JavaStdlib/JavaUtilJar/generated/ZipEntry.swift index 6e7fa72c2..fa20667e7 100644 --- a/Sources/JavaStdlib/JavaUtilJar/generated/ZipEntry.swift +++ b/Sources/JavaStdlib/JavaUtilJar/generated/ZipEntry.swift @@ -87,7 +87,7 @@ open class ZipEntry: JavaObject { /// public byte[] java.util.zip.ZipEntry.getExtra() /// ``` @JavaMethod - open func getExtra() -> [Int8] + open func getExtra() -> [UInt8] /// Java method `setExtra`. /// @@ -96,7 +96,7 @@ open class ZipEntry: JavaObject { /// public void java.util.zip.ZipEntry.setExtra(byte[]) /// ``` @JavaMethod - open func setExtra(_ arg0: [Int8]) + open func setExtra(_ arg0: [UInt8]) /// Java method `getMethod`. /// diff --git a/Sources/SwiftJava/generated/ByteBuffer.swift b/Sources/SwiftJava/generated/ByteBuffer.swift index e7601d78d..0819e8781 100644 --- a/Sources/SwiftJava/generated/ByteBuffer.swift +++ b/Sources/SwiftJava/generated/ByteBuffer.swift @@ -27,7 +27,7 @@ extension JavaClass { /// public static java.nio.ByteBuffer java.nio.ByteBuffer.wrap(byte[]) /// ``` @JavaStaticMethod - public func wrap(_ arg0: [Int8]) -> ByteBuffer! + public func wrap(_ arg0: [UInt8]) -> ByteBuffer! /// Java method `wrap`. /// @@ -36,7 +36,7 @@ extension JavaClass { /// public static java.nio.ByteBuffer java.nio.ByteBuffer.wrap(byte[],int,int) /// ``` @JavaStaticMethod - public func wrap(_ arg0: [Int8], _ arg1: Int32, _ arg2: Int32) -> ByteBuffer! + public func wrap(_ arg0: [UInt8], _ arg1: Int32, _ arg2: Int32) -> ByteBuffer! } /// Java `sealed class`, permits: `java.nio.HeapByteBuffer`, `java.nio.MappedByteBuffer` @JavaClass("java.nio.ByteBuffer") @@ -66,7 +66,7 @@ open class ByteBuffer: JavaObject { /// public final byte[] java.nio.ByteBuffer.array() /// ``` @JavaMethod - open func array() -> [Int8] + open func array() -> [UInt8] /// Java method `arrayOffset`. /// @@ -228,7 +228,7 @@ open class ByteBuffer: JavaObject { /// public java.nio.ByteBuffer java.nio.ByteBuffer.get(byte[]) /// ``` @JavaMethod - open func get(_ arg0: [Int8]) -> ByteBuffer! + open func get(_ arg0: [UInt8]) -> ByteBuffer! /// Java method `get`. /// @@ -237,7 +237,7 @@ open class ByteBuffer: JavaObject { /// public java.nio.ByteBuffer java.nio.ByteBuffer.get(byte[],int,int) /// ``` @JavaMethod - open func get(_ arg0: [Int8], _ arg1: Int32, _ arg2: Int32) -> ByteBuffer! + open func get(_ arg0: [UInt8], _ arg1: Int32, _ arg2: Int32) -> ByteBuffer! /// Java method `get`. /// @@ -246,7 +246,7 @@ open class ByteBuffer: JavaObject { /// public java.nio.ByteBuffer java.nio.ByteBuffer.get(int,byte[]) /// ``` @JavaMethod - open func get(_ arg0: Int32, _ arg1: [Int8]) -> ByteBuffer! + open func get(_ arg0: Int32, _ arg1: [UInt8]) -> ByteBuffer! /// Java method `get`. /// @@ -255,7 +255,7 @@ open class ByteBuffer: JavaObject { /// public java.nio.ByteBuffer java.nio.ByteBuffer.get(int,byte[],int,int) /// ``` @JavaMethod - open func get(_ arg0: Int32, _ arg1: [Int8], _ arg2: Int32, _ arg3: Int32) -> ByteBuffer! + open func get(_ arg0: Int32, _ arg1: [UInt8], _ arg2: Int32, _ arg3: Int32) -> ByteBuffer! /// Java method `hasArray`. /// @@ -363,7 +363,7 @@ open class ByteBuffer: JavaObject { /// public final java.nio.ByteBuffer java.nio.ByteBuffer.put(byte[]) /// ``` @JavaMethod - open func put(_ arg0: [Int8]) -> ByteBuffer! + open func put(_ arg0: [UInt8]) -> ByteBuffer! /// Java method `put`. /// @@ -372,7 +372,7 @@ open class ByteBuffer: JavaObject { /// public java.nio.ByteBuffer java.nio.ByteBuffer.put(byte[],int,int) /// ``` @JavaMethod - open func put(_ arg0: [Int8], _ arg1: Int32, _ arg2: Int32) -> ByteBuffer! + open func put(_ arg0: [UInt8], _ arg1: Int32, _ arg2: Int32) -> ByteBuffer! /// Java method `put`. /// @@ -381,7 +381,7 @@ open class ByteBuffer: JavaObject { /// public java.nio.ByteBuffer java.nio.ByteBuffer.put(int,byte[]) /// ``` @JavaMethod - open func put(_ arg0: Int32, _ arg1: [Int8]) -> ByteBuffer! + open func put(_ arg0: Int32, _ arg1: [UInt8]) -> ByteBuffer! /// Java method `put`. /// @@ -390,7 +390,7 @@ open class ByteBuffer: JavaObject { /// public java.nio.ByteBuffer java.nio.ByteBuffer.put(int,byte[],int,int) /// ``` @JavaMethod - open func put(_ arg0: Int32, _ arg1: [Int8], _ arg2: Int32, _ arg3: Int32) -> ByteBuffer! + open func put(_ arg0: Int32, _ arg1: [UInt8], _ arg2: Int32, _ arg3: Int32) -> ByteBuffer! /// Java method `put`. /// diff --git a/Sources/SwiftJava/generated/InputStream.swift b/Sources/SwiftJava/generated/InputStream.swift index 386713e95..5da1f9397 100644 --- a/Sources/SwiftJava/generated/InputStream.swift +++ b/Sources/SwiftJava/generated/InputStream.swift @@ -68,7 +68,7 @@ open class InputStream: JavaObject { /// public int java.io.InputStream.read(byte[]) throws java.io.IOException /// ``` @JavaMethod - open func read(_ arg0: [Int8]) throws -> Int32 + open func read(_ arg0: [UInt8]) throws -> Int32 /// Java method `read`. /// @@ -77,7 +77,7 @@ open class InputStream: JavaObject { /// public int java.io.InputStream.read(byte[],int,int) throws java.io.IOException /// ``` @JavaMethod - open func read(_ arg0: [Int8], _ arg1: Int32, _ arg2: Int32) throws -> Int32 + open func read(_ arg0: [UInt8], _ arg1: Int32, _ arg2: Int32) throws -> Int32 /// Java method `readAllBytes`. /// @@ -86,7 +86,7 @@ open class InputStream: JavaObject { /// public byte[] java.io.InputStream.readAllBytes() throws java.io.IOException /// ``` @JavaMethod - open func readAllBytes() throws -> [Int8] + open func readAllBytes() throws -> [UInt8] /// Java method `readNBytes`. /// @@ -95,7 +95,7 @@ open class InputStream: JavaObject { /// public byte[] java.io.InputStream.readNBytes(int) throws java.io.IOException /// ``` @JavaMethod - open func readNBytes(_ arg0: Int32) throws -> [Int8] + open func readNBytes(_ arg0: Int32) throws -> [UInt8] /// Java method `readNBytes`. /// @@ -104,7 +104,7 @@ open class InputStream: JavaObject { /// public int java.io.InputStream.readNBytes(byte[],int,int) throws java.io.IOException /// ``` @JavaMethod - open func readNBytes(_ arg0: [Int8], _ arg1: Int32, _ arg2: Int32) throws -> Int32 + open func readNBytes(_ arg0: [UInt8], _ arg1: Int32, _ arg2: Int32) throws -> Int32 /// Java method `reset`. /// diff --git a/Sources/SwiftJava/generated/JavaClassLoader.swift b/Sources/SwiftJava/generated/JavaClassLoader.swift index e9ff8f57e..721d475e1 100644 --- a/Sources/SwiftJava/generated/JavaClassLoader.swift +++ b/Sources/SwiftJava/generated/JavaClassLoader.swift @@ -102,7 +102,7 @@ open class JavaClassLoader: JavaObject { /// ``` @available(*, deprecated) @JavaMethod - open func defineClass(_ arg0: [Int8], _ arg1: Int32, _ arg2: Int32) throws -> JavaClass! + open func defineClass(_ arg0: [UInt8], _ arg1: Int32, _ arg2: Int32) throws -> JavaClass! /// Java method `defineClass`. /// @@ -111,7 +111,7 @@ open class JavaClassLoader: JavaObject { /// protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int) throws java.lang.ClassFormatError /// ``` @JavaMethod - open func defineClass(_ arg0: String, _ arg1: [Int8], _ arg2: Int32, _ arg3: Int32) throws -> JavaClass! + open func defineClass(_ arg0: String, _ arg1: [UInt8], _ arg2: Int32, _ arg3: Int32) throws -> JavaClass! /// Java method `findClass`. /// diff --git a/Sources/SwiftJava/generated/JavaString.swift b/Sources/SwiftJava/generated/JavaString.swift index e9d2f7d8e..33d3e0d72 100644 --- a/Sources/SwiftJava/generated/JavaString.swift +++ b/Sources/SwiftJava/generated/JavaString.swift @@ -125,30 +125,30 @@ open class JavaString: JavaObject { @_nonoverride public convenience init(environment: JNIEnvironment? = nil) @JavaMethod - @_nonoverride public convenience init(_ arg0: [Int8], environment: JNIEnvironment? = nil) + @_nonoverride public convenience init(_ arg0: [UInt8], environment: JNIEnvironment? = nil) @available(*, deprecated) @JavaMethod - @_nonoverride public convenience init(_ arg0: [Int8], _ arg1: Int32, environment: JNIEnvironment? = nil) + @_nonoverride public convenience init(_ arg0: [UInt8], _ arg1: Int32, environment: JNIEnvironment? = nil) @JavaMethod - @_nonoverride public convenience init(_ arg0: [Int8], _ arg1: Int32, _ arg2: Int32, environment: JNIEnvironment? = nil) + @_nonoverride public convenience init(_ arg0: [UInt8], _ arg1: Int32, _ arg2: Int32, environment: JNIEnvironment? = nil) @available(*, deprecated) @JavaMethod - @_nonoverride public convenience init(_ arg0: [Int8], _ arg1: Int32, _ arg2: Int32, _ arg3: Int32, environment: JNIEnvironment? = nil) + @_nonoverride public convenience init(_ arg0: [UInt8], _ arg1: Int32, _ arg2: Int32, _ arg3: Int32, environment: JNIEnvironment? = nil) @JavaMethod - @_nonoverride public convenience init(_ arg0: [Int8], _ arg1: Int32, _ arg2: Int32, _ arg3: String, environment: JNIEnvironment? = nil) throws + @_nonoverride public convenience init(_ arg0: [UInt8], _ arg1: Int32, _ arg2: Int32, _ arg3: String, environment: JNIEnvironment? = nil) throws @JavaMethod - @_nonoverride public convenience init(_ arg0: [Int8], _ arg1: Int32, _ arg2: Int32, _ arg3: Charset?, environment: JNIEnvironment? = nil) + @_nonoverride public convenience init(_ arg0: [UInt8], _ arg1: Int32, _ arg2: Int32, _ arg3: Charset?, environment: JNIEnvironment? = nil) @JavaMethod - @_nonoverride public convenience init(_ arg0: [Int8], _ arg1: String, environment: JNIEnvironment? = nil) throws + @_nonoverride public convenience init(_ arg0: [UInt8], _ arg1: String, environment: JNIEnvironment? = nil) throws @JavaMethod - @_nonoverride public convenience init(_ arg0: [Int8], _ arg1: Charset?, environment: JNIEnvironment? = nil) + @_nonoverride public convenience init(_ arg0: [UInt8], _ arg1: Charset?, environment: JNIEnvironment? = nil) @JavaMethod @_nonoverride public convenience init(_ arg0: [UInt16], environment: JNIEnvironment? = nil) @@ -178,7 +178,7 @@ open class JavaString: JavaObject { /// public byte[] java.lang.String.getBytes() /// ``` @JavaMethod - open func getBytes() -> [Int8] + open func getBytes() -> [UInt8] /// Java method `getBytes`. /// @@ -187,7 +187,7 @@ open class JavaString: JavaObject { /// public byte[] java.lang.String.getBytes(java.lang.String) throws java.io.UnsupportedEncodingException /// ``` @JavaMethod - open func getBytes(_ arg0: String) throws -> [Int8] + open func getBytes(_ arg0: String) throws -> [UInt8] /// Java method `getBytes`. /// @@ -196,7 +196,7 @@ open class JavaString: JavaObject { /// public byte[] java.lang.String.getBytes(java.nio.charset.Charset) /// ``` @JavaMethod - open func getBytes(_ arg0: Charset?) -> [Int8] + open func getBytes(_ arg0: Charset?) -> [UInt8] /// Java method `getBytes`. /// @@ -206,7 +206,7 @@ open class JavaString: JavaObject { /// ``` @available(*, deprecated) @JavaMethod - open func getBytes(_ arg0: Int32, _ arg1: Int32, _ arg2: [Int8], _ arg3: Int32) + open func getBytes(_ arg0: Int32, _ arg1: Int32, _ arg2: [UInt8], _ arg3: Int32) /// Java method `charAt`. /// diff --git a/Sources/SwiftJava/generated/OutputStream.swift b/Sources/SwiftJava/generated/OutputStream.swift index 84b946693..c69aa82b4 100644 --- a/Sources/SwiftJava/generated/OutputStream.swift +++ b/Sources/SwiftJava/generated/OutputStream.swift @@ -50,7 +50,7 @@ open class OutputStream: JavaObject { /// public void java.io.OutputStream.write(byte[]) throws java.io.IOException /// ``` @JavaMethod - open func write(_ arg0: [Int8]) throws + open func write(_ arg0: [UInt8]) throws /// Java method `write`. /// @@ -59,5 +59,5 @@ open class OutputStream: JavaObject { /// public void java.io.OutputStream.write(byte[],int,int) throws java.io.IOException /// ``` @JavaMethod - open func write(_ arg0: [Int8], _ arg1: Int32, _ arg2: Int32) throws + open func write(_ arg0: [UInt8], _ arg1: Int32, _ arg2: Int32) throws } diff --git a/Sources/SwiftJavaToolLib/JavaTranslator.swift b/Sources/SwiftJavaToolLib/JavaTranslator.swift index c6b68eab2..7ec7ec66e 100644 --- a/Sources/SwiftJavaToolLib/JavaTranslator.swift +++ b/Sources/SwiftJavaToolLib/JavaTranslator.swift @@ -43,7 +43,6 @@ package class JavaTranslator { /// Swift type name and its Swift module. package var translatedClasses: [JavaFullyQualifiedTypeName: SwiftTypeName] = [ "java.lang.Object": SwiftTypeName(module: "SwiftJava", name: "JavaObject"), - "byte[]": SwiftTypeName(module: nil, name: "[UInt8]"), ] /// A mapping from the name of each known Java class with the Swift value type @@ -327,6 +326,11 @@ extension JavaTranslator { let swiftTypeName: String if !preferValueTypes, case .array(_) = javaType { swiftTypeName = try self.getSwiftTypeNameFromJavaClassName("java.lang.reflect.Array", preferValueTypes: false) + } else if case .array(.byte) = javaType { + // A Java byte[] is a byte buffer, for which Swift's idiomatic element type + // is UInt8; this also mirrors the export direction, where UInt8 maps to + // byte. Scalar byte stays Int8, matching Java's signed byte. + swiftTypeName = "[UInt8]" } else { swiftTypeName = try javaType.swiftTypeName { javaClassName in try self.getSwiftTypeNameFromJavaClassName(javaClassName, preferValueTypes: preferValueTypes) diff --git a/Tests/SwiftJavaToolLibTests/Java2SwiftTests.swift b/Tests/SwiftJavaToolLibTests/Java2SwiftTests.swift index 374d2b332..1c8e6b79f 100644 --- a/Tests/SwiftJavaToolLibTests/Java2SwiftTests.swift +++ b/Tests/SwiftJavaToolLibTests/Java2SwiftTests.swift @@ -659,7 +659,7 @@ class Java2SwiftTests: XCTestCase { """, """ @JavaMethod - open func array() -> [Int8] + open func array() -> [UInt8] """, """ @JavaMethod @@ -668,6 +668,43 @@ class Java2SwiftTests: XCTestCase { ] ) } + + func testByteArrayTranslatesToUInt8AndScalarByteStaysInt8() throws { + try assertTranslatedClass( + MyJavaString.self, + swiftTypeName: "JavaString", + expectedChunks: [ + """ + @JavaMethod + public func getBytes() -> [UInt8] + """, + """ + @JavaMethod + public func getBytes(_ arg0: String) throws -> [UInt8] + """, + ] + ) + + try assertTranslatedClass( + ReflectArray.self, + swiftTypeName: "ReflectArray", + asClass: true, + translatedClasses: [ + "java.lang.Object": SwiftTypeName(module: "SwiftJava", name: "JavaObject"), + "java.lang.reflect.Array": SwiftTypeName(module: nil, name: "ReflectArray"), + ], + expectedChunks: [ + """ + @JavaMethod + public func getByte(_ arg0: JavaObject?, _ arg1: Int32) throws -> Int8 + """, + """ + @JavaMethod + public func setByte(_ arg0: JavaObject?, _ arg1: Int32, _ arg2: Int8) throws + """, + ] + ) + } } @JavaClass("java.lang.ClassLoader") @@ -725,6 +762,10 @@ private class NIOBuffer: JavaObject { private class NIOByteBuffer: NIOBuffer { } +@JavaClass("java.lang.reflect.Array") +private struct ReflectArray { +} + /// Translate a Java class and assert that the translated output contains /// each of the expected "chunks" of text. func assertTranslatedClass( From 025fec871950241ed46ae5a4786667710e196c9b Mon Sep 17 00:00:00 2001 From: rayman-zhao Date: Sat, 24 Oct 2026 22:17:56 +0800 Subject: [PATCH 2/2] Fix in-repo call sites after the byte[] mapping change JavaClassTranslator read .class bytes via the generated InputStream.readAllBytes() wrapper, which now returns [UInt8]; drop the now-unnecessary bitPattern conversion shim. Update the JavaKitSampleApp array tests to the new [UInt8] signatures and a format nit in JavaTranslator. --- .../JavaKitExampleTests/JavaKitArrayRuntimeTests.swift | 10 +++++----- Sources/SwiftJavaToolLib/JavaClassTranslator.swift | 4 +--- Sources/SwiftJavaToolLib/JavaTranslator.swift | 2 +- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/Samples/JavaKitSampleApp/Tests/JavaKitExampleTests/JavaKitArrayRuntimeTests.swift b/Samples/JavaKitSampleApp/Tests/JavaKitExampleTests/JavaKitArrayRuntimeTests.swift index 5af6329b2..3b5540c84 100644 --- a/Samples/JavaKitSampleApp/Tests/JavaKitExampleTests/JavaKitArrayRuntimeTests.swift +++ b/Samples/JavaKitSampleApp/Tests/JavaKitExampleTests/JavaKitArrayRuntimeTests.swift @@ -26,7 +26,7 @@ struct JavaKitArrayRuntimeTests { let env = try jvm.environment() let arrays = HelloJavaKitArrays(environment: env) - let bytes: [Int8] = arrays.getFixedBytes() + let bytes: [UInt8] = arrays.getFixedBytes() #expect(bytes == [1, 2, 3, 4, 5]) } @@ -36,7 +36,7 @@ struct JavaKitArrayRuntimeTests { let arrays = HelloJavaKitArrays(environment: env) // snippet.arraysUsage - let reversed: [Int8] = arrays.reverseBytes([10, 20, 30]) + let reversed: [UInt8] = arrays.reverseBytes([10, 20, 30]) #expect(reversed == [30, 20, 10]) // snippet.end } @@ -55,7 +55,7 @@ struct JavaKitArrayRuntimeTests { let env = try jvm.environment() let arrays = HelloJavaKitArrays(environment: env) - let bytes: [Int8] = arrays.getEmptyBytes() + let bytes: [UInt8] = arrays.getEmptyBytes() #expect(bytes.isEmpty) } @@ -64,7 +64,7 @@ struct JavaKitArrayRuntimeTests { let env = try jvm.environment() let arrays = HelloJavaKitArrays(environment: env) - let bytes: [Int8] = arrays.filledBytes(4, 42) + let bytes: [UInt8] = arrays.filledBytes(4, 42) #expect(bytes == [42, 42, 42, 42]) } @@ -91,7 +91,7 @@ struct JavaKitArrayRuntimeTests { let env = try jvm.environment() let arrays = HelloJavaKitArrays(environment: env) - let bytes: [Int8] = arrays.stringToBytes("Hi") + let bytes: [UInt8] = arrays.stringToBytes("Hi") // "Hi" in UTF-8 is [0x48, 0x69] #expect(bytes == [0x48, 0x69]) } diff --git a/Sources/SwiftJavaToolLib/JavaClassTranslator.swift b/Sources/SwiftJavaToolLib/JavaClassTranslator.swift index 125def18b..914f69972 100644 --- a/Sources/SwiftJavaToolLib/JavaClassTranslator.swift +++ b/Sources/SwiftJavaToolLib/JavaClassTranslator.swift @@ -209,9 +209,7 @@ struct JavaClassTranslator { if let inputStream = javaClass.getClassLoader()?.getResourceAsStream(resourcePath) { do { let bytes = try inputStream.readAllBytes() - self.runtimeInvisibleAnnotations = JavaClassFileReader.parseRuntimeInvisibleAnnotations( - bytes.map { UInt8(bitPattern: $0) } - ) + self.runtimeInvisibleAnnotations = JavaClassFileReader.parseRuntimeInvisibleAnnotations(bytes) let classCount = self.runtimeInvisibleAnnotations.classAnnotations.count let methodCount = self.runtimeInvisibleAnnotations.methodAnnotations.count let fieldCount = self.runtimeInvisibleAnnotations.fieldAnnotations.count diff --git a/Sources/SwiftJavaToolLib/JavaTranslator.swift b/Sources/SwiftJavaToolLib/JavaTranslator.swift index 7ec7ec66e..89196e0b7 100644 --- a/Sources/SwiftJavaToolLib/JavaTranslator.swift +++ b/Sources/SwiftJavaToolLib/JavaTranslator.swift @@ -42,7 +42,7 @@ package class JavaTranslator { /// A mapping from the name of each known Java class to the corresponding /// Swift type name and its Swift module. package var translatedClasses: [JavaFullyQualifiedTypeName: SwiftTypeName] = [ - "java.lang.Object": SwiftTypeName(module: "SwiftJava", name: "JavaObject"), + "java.lang.Object": SwiftTypeName(module: "SwiftJava", name: "JavaObject") ] /// A mapping from the name of each known Java class with the Swift value type