Skip to content

Commit 2377ddd

Browse files
committed
pull request feedback
1 parent 42ea1e3 commit 2377ddd

8 files changed

Lines changed: 139 additions & 41 deletions

File tree

Samples/JExtractJNISampleApp/build.gradle

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,11 @@ dependencies {
156156

157157
tasks.named('test', Test) {
158158
useJUnitPlatform()
159+
160+
testLogging {
161+
events "failed"
162+
exceptionFormat "full"
163+
}
159164
}
160165

161166
application {

Samples/JExtractJNISampleApp/ci-validate.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@
33
set -x
44
set -e
55

6-
./gradlew run
6+
./gradlew run
7+
./gradlew test
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
//===----------------------------------------------------------------------===//
2+
//
3+
// This source file is part of the Swift.org open source project
4+
//
5+
// Copyright (c) 2024 Apple Inc. and the Swift.org project authors
6+
// Licensed under Apache License v2.0
7+
//
8+
// See LICENSE.txt for license information
9+
// See CONTRIBUTORS.txt for the list of Swift.org project authors
10+
//
11+
// SPDX-License-Identifier: Apache-2.0
12+
//
13+
//===----------------------------------------------------------------------===//
14+
15+
package com.example.swift;
16+
17+
import com.example.swift.MySwiftLibrary;
18+
import org.junit.jupiter.api.BeforeAll;
19+
import org.junit.jupiter.api.Disabled;
20+
import org.junit.jupiter.api.Test;
21+
22+
import static org.junit.jupiter.api.Assertions.*;
23+
24+
public class MySwiftClassTest {
25+
@Test
26+
void init_noParameters() {
27+
MySwiftClass c = MySwiftClass.init();
28+
assertNotNull(c);
29+
}
30+
31+
@Test
32+
void init_withParameters() {
33+
MySwiftClass c = MySwiftClass.init(1337, 42);
34+
assertNotNull(c);
35+
}
36+
37+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
//===----------------------------------------------------------------------===//
2+
//
3+
// This source file is part of the Swift.org open source project
4+
//
5+
// Copyright (c) 2024 Apple Inc. and the Swift.org project authors
6+
// Licensed under Apache License v2.0
7+
//
8+
// See LICENSE.txt for license information
9+
// See CONTRIBUTORS.txt for the list of Swift.org project authors
10+
//
11+
// SPDX-License-Identifier: Apache-2.0
12+
//
13+
//===----------------------------------------------------------------------===//
14+
15+
package com.example.swift;
16+
17+
import com.example.swift.MySwiftLibrary;
18+
import org.junit.jupiter.api.BeforeAll;
19+
import org.junit.jupiter.api.Disabled;
20+
import org.junit.jupiter.api.Test;
21+
22+
import java.util.Arrays;
23+
import java.util.concurrent.CountDownLatch;
24+
import java.util.stream.Collectors;
25+
26+
import static org.junit.jupiter.api.Assertions.*;
27+
28+
public class MySwiftLibraryTest {
29+
@Test
30+
void call_helloWorld() {
31+
MySwiftLibrary.helloWorld();
32+
}
33+
34+
@Test
35+
void call_globalTakeInt() {
36+
MySwiftLibrary.globalTakeInt(12);
37+
}
38+
39+
@Test
40+
void call_globalMakeInt() {
41+
long i = MySwiftLibrary.globalMakeInt();
42+
assertEquals(42, i);
43+
}
44+
45+
@Test
46+
void call_globalTakeIntInt() {
47+
MySwiftLibrary.globalTakeIntInt(1337, 42);
48+
}
49+
50+
@Test
51+
void call_writeString_jextract() {
52+
var string = "Hello Swift!";
53+
long reply = MySwiftLibrary.globalWriteString(string);
54+
55+
assertEquals(string.length(), reply);
56+
}
57+
}

Sources/JExtractSwiftLib/FFM/FFMSwift2JavaGenerator+JavaTranslation.swift

Lines changed: 11 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,6 @@ extension FFMSwift2JavaGenerator {
3535
return translated
3636
}
3737

38-
/// Represent a parameter in Java code.
39-
struct JavaParameter {
40-
/// The type.
41-
var type: JavaType
42-
43-
/// The name.
44-
var name: String
45-
}
46-
4738
/// Represent a Swift API parameter translated to Java.
4839
struct TranslatedParameter {
4940
/// Java parameter(s) mapped to the Swift parameter.
@@ -209,7 +200,7 @@ extension FFMSwift2JavaGenerator {
209200
if let cType = try? CType(cdeclType: type) {
210201
return TranslatedParameter(
211202
javaParameters: [
212-
JavaParameter(type: cType.javaType, name: parameterName)
203+
JavaParameter(name: parameterName, type: cType.javaType)
213204
],
214205
conversion: .placeholder
215206
)
@@ -222,7 +213,7 @@ extension FFMSwift2JavaGenerator {
222213
case .unsafeRawBufferPointer, .unsafeMutableRawBufferPointer:
223214
return TranslatedParameter(
224215
javaParameters: [
225-
JavaParameter(type: .javaForeignMemorySegment, name: parameterName)
216+
JavaParameter(name: parameterName, type: .javaForeignMemorySegment)
226217
],
227218
conversion: .method(
228219
.explodedName(component: "pointer"),
@@ -309,8 +300,7 @@ extension FFMSwift2JavaGenerator {
309300
return TranslatedParameter(
310301
javaParameters: [
311302
JavaParameter(
312-
type: javaType,
313-
name: parameterName
303+
name: parameterName, type: javaType
314304
)
315305
],
316306
conversion: .placeholder
@@ -323,8 +313,7 @@ extension FFMSwift2JavaGenerator {
323313
return TranslatedParameter(
324314
javaParameters: [
325315
JavaParameter(
326-
type: JavaType.class(package: "org.swift.swiftkit", name: "SwiftAnyType"),
327-
name: parameterName)
316+
name: parameterName, type: JavaType.class(package: "org.swift.swiftkit", name: "SwiftAnyType"))
328317
],
329318
conversion: .swiftValueSelfSegment(.placeholder)
330319
)
@@ -346,7 +335,7 @@ extension FFMSwift2JavaGenerator {
346335
case .unsafeRawBufferPointer, .unsafeMutableRawBufferPointer:
347336
return TranslatedParameter(
348337
javaParameters: [
349-
JavaParameter(type: .javaForeignMemorySegment, name: parameterName),
338+
JavaParameter(name: parameterName, type: .javaForeignMemorySegment),
350339
],
351340
conversion: .commaSeparated([
352341
.placeholder,
@@ -358,8 +347,7 @@ extension FFMSwift2JavaGenerator {
358347
return TranslatedParameter(
359348
javaParameters: [
360349
JavaParameter(
361-
type: .javaLangString,
362-
name: parameterName
350+
name: parameterName, type: .javaLangString
363351
)
364352
],
365353
conversion: .call(.placeholder, function: "SwiftKit.toCString", withArena: true)
@@ -378,8 +366,7 @@ extension FFMSwift2JavaGenerator {
378366
return TranslatedParameter(
379367
javaParameters: [
380368
JavaParameter(
381-
type: try translate(swiftType: swiftType),
382-
name: parameterName
369+
name: parameterName, type: try translate(swiftType: swiftType)
383370
)
384371
],
385372
conversion: .swiftValueSelfSegment(.placeholder)
@@ -393,8 +380,7 @@ extension FFMSwift2JavaGenerator {
393380
return TranslatedParameter(
394381
javaParameters: [
395382
JavaParameter(
396-
type: JavaType.class(package: nil, name: "\(methodName).\(parameterName)"),
397-
name: parameterName)
383+
name: parameterName, type: JavaType.class(package: nil, name: "\(methodName).\(parameterName)"))
398384
],
399385
conversion: .call(.placeholder, function: "\(methodName).$toUpcallStub", withArena: true)
400386
)
@@ -439,8 +425,8 @@ extension FFMSwift2JavaGenerator {
439425
return TranslatedResult(
440426
javaResultType: .javaForeignMemorySegment,
441427
outParameters: [
442-
JavaParameter(type: .javaForeignMemorySegment, name: "pointer"),
443-
JavaParameter(type: .long, name: "count"),
428+
JavaParameter(name: "pointer", type: .javaForeignMemorySegment),
429+
JavaParameter(name: "count", type: .long),
444430
],
445431
conversion: .method(
446432
.readMemorySegment(.explodedName(component: "pointer"), as: .javaForeignMemorySegment),
@@ -475,7 +461,7 @@ extension FFMSwift2JavaGenerator {
475461
return TranslatedResult(
476462
javaResultType: javaType,
477463
outParameters: [
478-
JavaParameter(type: javaType, name: "")
464+
JavaParameter(name: "", type: javaType)
479465
],
480466
conversion: .constructSwiftValue(.placeholder, javaType)
481467
)

Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+JavaBindingsPrinting.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ extension JNISwift2JavaGenerator {
2929
javaPackagePath: javaPackagePath,
3030
filename: filename
3131
) {
32-
print("[swift-java] Generated: \(ty.swiftNominal.name.bold).java (at \(outputFile))")
32+
logger.info("[swift-java] Generated: \(ty.swiftNominal.name.bold).java (at \(outputFile))")
3333
}
3434
}
3535

@@ -139,7 +139,7 @@ extension JNISwift2JavaGenerator {
139139

140140
printDeclDocumentation(&printer, decl)
141141
printer.printBraceBlock("public static \(renderFunctionSignature(decl))") { printer in
142-
let initArguments = translatedDecl.translatedFunctionSignature.parameters.map(\.asArgument)
142+
let initArguments = translatedDecl.translatedFunctionSignature.parameters.map(\.name)
143143
printer.print(
144144
"""
145145
long selfPointer = \(type.qualifiedName).allocatingInit(\(initArguments.joined(separator: ", ")));

Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+JavaTranslation.swift

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -113,19 +113,6 @@ extension JNISwift2JavaGenerator {
113113
let translatedFunctionSignature: TranslatedFunctionSignature
114114
}
115115

116-
struct JavaParameter {
117-
let name: String
118-
let type: JavaType
119-
120-
var asParameter: String {
121-
"\(type) \(name)"
122-
}
123-
124-
var asArgument: String {
125-
name
126-
}
127-
}
128-
129116
struct TranslatedFunctionSignature {
130117
let parameters: [JavaParameter]
131118
let resultType: JavaType
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
//===----------------------------------------------------------------------===//
2+
//
3+
// This source file is part of the Swift.org open source project
4+
//
5+
// Copyright (c) 2025 Apple Inc. and the Swift.org project authors
6+
// Licensed under Apache License v2.0
7+
//
8+
// See LICENSE.txt for license information
9+
// See CONTRIBUTORS.txt for the list of Swift.org project authors
10+
//
11+
// SPDX-License-Identifier: Apache-2.0
12+
//
13+
//===----------------------------------------------------------------------===//
14+
15+
import JavaTypes
16+
17+
/// Represent a parameter in Java code.
18+
struct JavaParameter {
19+
let name: String
20+
let type: JavaType
21+
22+
var asParameter: String {
23+
"\(type) \(name)"
24+
}
25+
}

0 commit comments

Comments
 (0)