Skip to content

Commit 0df52d7

Browse files
authored
Merge branch 'main' into wip-array-array
2 parents ce79e3c + b83ab0d commit 0df52d7

9 files changed

Lines changed: 43 additions & 36 deletions

File tree

.github/workflows/pull_request.yml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ jobs:
2525
name: Documentation check
2626
runs-on: ubuntu-latest
2727
container:
28-
image: 'swift:6.2-noble'
28+
image: 'swift:6.3-noble'
2929
strategy:
3030
fail-fast: true
3131
matrix:
32-
swift_version: ['6.2']
32+
swift_version: ['6.3']
3333
os_version: ['jammy']
3434
jdk_vendor: ['corretto']
3535
steps:
@@ -47,7 +47,7 @@ jobs:
4747
strategy:
4848
fail-fast: true
4949
matrix:
50-
swift_version: ['6.2', 'nightly']
50+
swift_version: ['6.2', '6.3', 'nightly']
5151
os_version: ['jammy']
5252
jdk_vendor: ['corretto']
5353
container:
@@ -73,7 +73,7 @@ jobs:
7373
strategy:
7474
fail-fast: true
7575
matrix:
76-
swift_version: ['6.2']
76+
swift_version: ['6.2', '6.3']
7777
os_version: ['macos']
7878
jdk_vendor: ['corretto']
7979
env:
@@ -97,7 +97,7 @@ jobs:
9797
strategy:
9898
fail-fast: true
9999
matrix:
100-
swift_version: ['6.2']
100+
swift_version: ['6.3']
101101
os_version: ['jammy']
102102
jdk_vendor: ['corretto']
103103
container:
@@ -117,7 +117,7 @@ jobs:
117117
strategy:
118118
fail-fast: true
119119
matrix:
120-
swift_version: ['6.2']
120+
swift_version: ['6.3']
121121
os_version: ['jammy']
122122
jdk_vendor: ['corretto']
123123
container:
@@ -139,7 +139,7 @@ jobs:
139139
strategy:
140140
fail-fast: false
141141
matrix:
142-
swift_version: ['6.1.3', '6.2', 'nightly']
142+
swift_version: ['6.1.3', '6.2', '6.3', 'nightly']
143143
os_version: ['jammy']
144144
jdk_vendor: ['corretto']
145145
container:
@@ -163,7 +163,7 @@ jobs:
163163
strategy:
164164
fail-fast: false
165165
matrix:
166-
swift_version: ['6.2.3']
166+
swift_version: ['6.2.3', '6.3']
167167
os_version: ['macos']
168168
jdk_vendor: ['corretto']
169169
env:
@@ -213,7 +213,7 @@ jobs:
213213
strategy:
214214
fail-fast: false
215215
matrix:
216-
swift_version: ['6.1.3', '6.2', 'nightly']
216+
swift_version: ['6.1.3', '6.2', '6.3', 'nightly']
217217
os_version: ['jammy']
218218
jdk_vendor: ['corretto']
219219
sample_app: [ # TODO: use a reusable-workflow to generate those names
@@ -241,7 +241,7 @@ jobs:
241241
strategy:
242242
fail-fast: false
243243
matrix:
244-
swift_version: ['6.2'] # no nightly testing on macOS
244+
swift_version: ['6.2', '6.3'] # no nightly testing on macOS
245245
os_version: ['macos']
246246
jdk_vendor: ['corretto']
247247
sample_app: [ # TODO: use a reusable-workflow to generate those names
@@ -265,14 +265,14 @@ jobs:
265265
run: .github/scripts/validate_sample.sh Samples/${{ matrix.sample_app }}
266266

267267
linkage-test:
268-
name: Linkage test (jammy swift:6.2)
268+
name: Linkage test (jammy swift:6.3)
269269
runs-on: ubuntu-latest
270270
strategy:
271271
fail-fast: false
272272
matrix:
273273
jdk_vendor: ['corretto']
274274
container:
275-
image: swift:6.2-jammy
275+
image: swift:6.3-jammy
276276
steps:
277277
- uses: actions/checkout@v6
278278
- name: Prepare CI Environment

BuildLogic/src/main/kotlin/build-logic.java-common-conventions.gradle.kts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,7 @@ tasks.test {
9292
"--enable-native-access=ALL-UNNAMED",
9393

9494
// Include the library paths where our dylibs are that we want to load and call
95-
"-Djava.library.path=" +
96-
(javaLibraryPaths(rootDir) + javaLibraryPaths(project.projectDir))
97-
.joinToString(File.pathSeparator)
95+
"-Djava.library.path=" + javaLibraryPaths(project.projectDir).joinToString(File.pathSeparator)
9896
)
9997
}
10098

BuildLogic/src/main/kotlin/utilities/javaLibraryPaths.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,10 @@ fun Project.javaLibraryPaths(rootDir: File?): List<String> {
4444
"${arch}-apple-macosx"
4545
}
4646

47-
val paths: List<String> = listOf("release", "debug").flatMap { configuration ->
48-
listOf(
49-
"${base}.build/${triple}/$configuration/",
50-
"${base}../../.build/${triple}/$configuration/",
51-
)
47+
val paths: List<String> = listOf("release", "debug").map { configuration ->
48+
"${base}.build/${triple}/$configuration/"
5249
}
5350
val swiftRuntimePaths = swiftRuntimeLibraryPaths()
5451

5552
return paths + swiftRuntimePaths
56-
}
53+
}

Samples/SwiftJavaExtractFFMSampleApp/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ application {
8080
applicationDefaultJvmArgs = listOf(
8181
"--enable-native-access=ALL-UNNAMED",
8282
// Include the library paths where our dylibs are that we want to load and call
83-
"-Djava.library.path=" + (javaLibraryPaths(rootDir) + javaLibraryPaths(project.projectDir)).joinToString(":"),
83+
"-Djava.library.path=" + javaLibraryPaths(project.projectDir).joinToString(File.pathSeparator),
8484
// Enable tracing downcalls (to Swift)
8585
"-Djextract.trace.downcalls=true"
8686
)
@@ -95,7 +95,7 @@ jmh {
9595

9696
jvmArgsAppend = listOf(
9797
"--enable-native-access=ALL-UNNAMED",
98-
"-Djava.library.path=" + (javaLibraryPaths(rootDir) + javaLibraryPaths(project.projectDir)).joinToString(":"),
98+
"-Djava.library.path=" + javaLibraryPaths(project.projectDir).joinToString(File.pathSeparator),
9999
// Enable tracing downcalls (to Swift)
100100
"-Djextract.trace.downcalls=false"
101101
)

Samples/SwiftJavaExtractJNISampleApp/Sources/MySwiftLibrary/Throw.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,8 @@
1515
import SwiftJava
1616

1717
public func throwString(input: String) throws -> String {
18-
input
18+
if input.isEmpty {
19+
throw MySwiftError.swiftError
20+
}
21+
return input
1922
}

Samples/SwiftJavaExtractJNISampleApp/build.gradle.kts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ application {
9292
applicationDefaultJvmArgs = listOf(
9393
"--enable-native-access=ALL-UNNAMED",
9494
// Include the library paths where our dylibs are that we want to load and call
95-
"-Djava.library.path=" + (javaLibraryPaths(rootDir) + javaLibraryPaths(project.projectDir)).joinToString(":"),
95+
"-Djava.library.path=" + javaLibraryPaths(project.projectDir).joinToString(File.pathSeparator),
9696
// Enable tracing downcalls (to Swift)
9797
"-Djextract.trace.downcalls=true"
9898
)
@@ -107,7 +107,7 @@ jmh {
107107

108108
jvmArgsAppend = listOf(
109109
"--enable-native-access=ALL-UNNAMED",
110-
"-Djava.library.path=" + (javaLibraryPaths(rootDir) + javaLibraryPaths(project.projectDir)).joinToString(":"),
110+
"-Djava.library.path=" + javaLibraryPaths(project.projectDir).joinToString(File.pathSeparator),
111111
// Enable tracing downcalls (to Swift)
112112
"-Djextract.trace.downcalls=false"
113113
)
@@ -119,4 +119,4 @@ tasks.register("printGradleHome") {
119119
println("Gradle Version: ${gradle.gradleVersion}")
120120
println("Gradle User Home: ${gradle.gradleUserHomeDir}")
121121
}
122-
}
122+
}

Samples/SwiftJavaExtractJNISampleApp/src/test/java/com/example/swift/ThrowTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,13 @@ void throwString() throws Exception {
2525
String result = MySwiftLibrary.throwString("hey");
2626
assertEquals("hey", result);
2727
}
28+
29+
@Test
30+
void throwStringActuallyThrows() {
31+
Exception exception = assertThrows(Exception.class, () -> {
32+
MySwiftLibrary.throwString("");
33+
});
34+
assertNotNull(exception.getMessage());
35+
assertTrue(exception.getMessage().contains("swiftError"));
36+
}
2837
}

Sources/SwiftJavaMacros/ImplementsJavaMacro.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ extension JavaImplementationMacro: PeerMacro {
213213
@used
214214
#endif
215215
@_cdecl(\(literal: cName))
216-
public func \(context.makeUniqueName(swiftName))(\(raw: cParameters.map{ $0.description }.joined(separator: ", ")))\(raw: cReturnType) {
216+
public func \(context.makeUniqueName("\(swiftTypeName)_\(swiftName)"))(\(raw: cParameters.map{ $0.description }.joined(separator: ", ")))\(raw: cReturnType) {
217217
\(body)
218218
}
219219
"""

Tests/SwiftJavaMacrosTests/JavaImplementationMacroTests.swift

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class JavaImplementationMacroTests: XCTestCase {
4848
@used
4949
#endif
5050
@_cdecl("Java_org_swift_example_Hello_1World_test_1method")
51-
public func __macro_local_11test_methodfMu_(environment: UnsafeMutablePointer<JNIEnv?>!, thisObj: jobject) -> Int32.JNIType {
51+
public func __macro_local_22HelloWorld_test_methodfMu_(environment: UnsafeMutablePointer<JNIEnv?>!, thisObj: jobject) -> Int32.JNIType {
5252
let obj = HelloWorld(javaThis: thisObj, environment: environment!)
5353
return obj.test_method()
5454
.getJNILocalRefValue(in: environment)
@@ -81,7 +81,7 @@ class JavaImplementationMacroTests: XCTestCase {
8181
@used
8282
#endif
8383
@_cdecl("Java_com_example_test_MyClass_simpleMethod")
84-
public func __macro_local_12simpleMethodfMu_(environment: UnsafeMutablePointer<JNIEnv?>!, thisObj: jobject) -> Int32.JNIType {
84+
public func __macro_local_20MyClass_simpleMethodfMu_(environment: UnsafeMutablePointer<JNIEnv?>!, thisObj: jobject) -> Int32.JNIType {
8585
let obj = MyClass(javaThis: thisObj, environment: environment!)
8686
return obj.simpleMethod()
8787
.getJNILocalRefValue(in: environment)
@@ -114,7 +114,7 @@ class JavaImplementationMacroTests: XCTestCase {
114114
@used
115115
#endif
116116
@_cdecl("Java_org_example_Utils_static_1helper")
117-
public func __macro_local_13static_helperfMu_(environment: UnsafeMutablePointer<JNIEnv?>!, thisClass: jclass) -> String.JNIType {
117+
public func __macro_local_19Utils_static_helperfMu_(environment: UnsafeMutablePointer<JNIEnv?>!, thisClass: jclass) -> String.JNIType {
118118
return Utils.static_helper(environment: environment)
119119
.getJNILocalRefValue(in: environment)
120120
}
@@ -154,7 +154,7 @@ class JavaImplementationMacroTests: XCTestCase {
154154
@used
155155
#endif
156156
@_cdecl("Java_test_Class_1With_1Underscores_method_1one")
157-
public func __macro_local_10method_onefMu_(environment: UnsafeMutablePointer<JNIEnv?>!, thisObj: jobject) -> Int32.JNIType {
157+
public func __macro_local_31ClassWithUnderscores_method_onefMu_(environment: UnsafeMutablePointer<JNIEnv?>!, thisObj: jobject) -> Int32.JNIType {
158158
let obj = ClassWithUnderscores(javaThis: thisObj, environment: environment!)
159159
return obj.method_one()
160160
.getJNILocalRefValue(in: environment)
@@ -164,7 +164,7 @@ class JavaImplementationMacroTests: XCTestCase {
164164
@used
165165
#endif
166166
@_cdecl("Java_test_Class_1With_1Underscores_method_1two")
167-
public func __macro_local_10method_twofMu_(environment: UnsafeMutablePointer<JNIEnv?>!, thisObj: jobject) -> Int32.JNIType {
167+
public func __macro_local_31ClassWithUnderscores_method_twofMu_(environment: UnsafeMutablePointer<JNIEnv?>!, thisObj: jobject) -> Int32.JNIType {
168168
let obj = ClassWithUnderscores(javaThis: thisObj, environment: environment!)
169169
return obj.method_two()
170170
.getJNILocalRefValue(in: environment)
@@ -205,7 +205,7 @@ class JavaImplementationMacroTests: XCTestCase {
205205
@used
206206
#endif
207207
@_cdecl("Java_org_swift_swiftkit_core_collections_SwiftDictionaryMap__00024size")
208-
public func __macro_local_5_sizefMu_(environment: UnsafeMutablePointer<JNIEnv?>!, thisClass: jclass, pointer: Int64.JNIType) -> Int32.JNIType {
208+
public func __macro_local_28SwiftDictionaryMapJava__sizefMu_(environment: UnsafeMutablePointer<JNIEnv?>!, thisClass: jclass, pointer: Int64.JNIType) -> Int32.JNIType {
209209
return SwiftDictionaryMapJava._size(environment: environment, pointer: Int64(fromJNI: pointer, in: environment!))
210210
.getJNILocalRefValue(in: environment)
211211
}
@@ -214,7 +214,7 @@ class JavaImplementationMacroTests: XCTestCase {
214214
@used
215215
#endif
216216
@_cdecl("Java_org_swift_swiftkit_core_collections_SwiftDictionaryMap__00024destroy")
217-
public func __macro_local_8_destroyfMu_(environment: UnsafeMutablePointer<JNIEnv?>!, thisClass: jclass, pointer: Int64.JNIType) {
217+
public func __macro_local_31SwiftDictionaryMapJava__destroyfMu_(environment: UnsafeMutablePointer<JNIEnv?>!, thisClass: jclass, pointer: Int64.JNIType) {
218218
return SwiftDictionaryMapJava._destroy(environment: environment, pointer: Int64(fromJNI: pointer, in: environment!))
219219
}
220220
""",
@@ -245,7 +245,7 @@ class JavaImplementationMacroTests: XCTestCase {
245245
@used
246246
#endif
247247
@_cdecl("Java_org_example_Processor_process_1data")
248-
public func __macro_local_12process_datafMu_(environment: UnsafeMutablePointer<JNIEnv?>!, thisObj: jobject) {
248+
public func __macro_local_22Processor_process_datafMu_(environment: UnsafeMutablePointer<JNIEnv?>!, thisObj: jobject) {
249249
let obj = Processor(javaThis: thisObj, environment: environment!)
250250
return obj.process_data()
251251
}

0 commit comments

Comments
 (0)