Skip to content

JavaKit: Macro and translator support for mapping Java classes to Swift classes #140

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 17 commits into from
Oct 31, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
a6780be
JavaKit: Macro and translator support for mapping Java classes to Swi…
DougGregor Oct 30, 2024
6440a3c
Java2Swift: Mark instance methods as "override" when needed
DougGregor Oct 30, 2024
83b0e1a
Java2Swift: Always use the nearest imported superclass for the superc…
DougGregor Oct 30, 2024
819dd27
Java2Swift: Regenerate generated mappings
DougGregor Oct 30, 2024
2a7d841
Java2Swift: Drop the "as(superclass)" function when generating classes
DougGregor Oct 30, 2024
4d833cf
Java2Swift: all initializers in "class mode" are convenience inits
DougGregor Oct 30, 2024
1baa095
Java2Swift: Fix enum initializer for class-based generation.
DougGregor Oct 31, 2024
1715af8
Java2Swift: Don't use Self in an invariant position in enum convenien…
DougGregor Oct 31, 2024
b55cd4d
Java2Swift: fullJavaClassName needs to be "open class" in class-gener…
DougGregor Oct 31, 2024
45d195c
Java2Swift: Correctly determine if a Swift method will be an override.
DougGregor Oct 31, 2024
9f5fbbf
Java2Swift: Java static methods need to use "public", not "open"
DougGregor Oct 31, 2024
ea6cfaa
Java2Swift: Include protected methods in generated classes
DougGregor Oct 31, 2024
c3337b6
Import java.util.zip.ZipEntry and regenerate JavaKit sources
DougGregor Oct 31, 2024
4b045b2
Java2Swift: Don't translate Java interfaces into Swift classes
DougGregor Oct 31, 2024
374c847
JavaField macro: within a class, don't generate "nonmutating" modifier
DougGregor Oct 31, 2024
7346359
Java2Swift: Account for differences in covariant overrides between Ja…
DougGregor Oct 31, 2024
0e3fc53
Java2Swift: Use `@_nonoverride` on generated convenience initializers
DougGregor Oct 31, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion Sources/Java2SwiftLib/JavaClassTranslator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -492,9 +492,10 @@ extension JavaClassTranslator {
let throwsStr = javaConstructor.throwsCheckedException ? "throws" : ""
let accessModifier = javaConstructor.isPublic ? "public " : ""
let convenienceModifier = translateAsClass ? "convenience " : ""
let nonoverrideAttribute = translateAsClass ? "@_nonoverride " : ""
return """
@JavaMethod
\(raw: accessModifier)\(raw: convenienceModifier)init(\(raw: parametersStr))\(raw: throwsStr)
\(raw: nonoverrideAttribute)\(raw: accessModifier)\(raw: convenienceModifier)init(\(raw: parametersStr))\(raw: throwsStr)
"""
}

Expand Down
4 changes: 2 additions & 2 deletions Tests/Java2SwiftTests/Java2SwiftTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,7 @@ class Java2SwiftTests: XCTestCase {
""",
"""
@JavaMethod
public convenience init(environment: JNIEnvironment? = nil)
@_nonoverride public convenience init(environment: JNIEnvironment? = nil)
""",
"""
@JavaMethod
Expand Down Expand Up @@ -314,7 +314,7 @@ class Java2SwiftTests: XCTestCase {
""",
"""
@JavaMethod
public convenience init(environment: JNIEnvironment? = nil)
@_nonoverride public convenience init(environment: JNIEnvironment? = nil)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hah sneaky 👍

""",
"""
@JavaMethod
Expand Down