Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
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
6 changes: 4 additions & 2 deletions Sources/JavaKit/Macros.swift
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@
named(javaThis),
named(javaEnvironment),
named(init(javaHolder:)),
named(JavaSuperclass)
named(JavaSuperclass),
named(as)
)
@attached(extension, conformances: AnyJavaObject)
@attached(peer)
Expand Down Expand Up @@ -73,7 +74,8 @@ public macro JavaClass(
named(javaThis),
named(javaEnvironment),
named(init(javaHolder:)),
named(JavaSuperclass)
named(JavaSuperclass),
named(as)
)
@attached(extension, conformances: AnyJavaObject)
public macro JavaInterface(_ fullClassName: String, extends: (any AnyJavaObject.Type)?...) =
Expand Down
7 changes: 7 additions & 0 deletions Sources/JavaKitMacros/JavaClassMacro.swift
Original file line number Diff line number Diff line change
Expand Up @@ -87,13 +87,20 @@ extension JavaClassMacro: MemberMacro {
}
"""

let nonOptionalAs: DeclSyntax = """
public func `as`<OtherClass: AnyJavaObject>(_: OtherClass.Type) -> OtherClass {
return OtherClass(javaHolder: javaHolder)
}
"""

return [
fullJavaClassNameMember,
superclassTypealias,
javaHolderMember,
javaThisMember,
javaEnvironmentMember,
initMember,
nonOptionalAs,
]
}
}
Expand Down
4 changes: 4 additions & 0 deletions Tests/JavaKitMacroTests/JavaClassMacroTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,10 @@ class JavaKitMacroTests: XCTestCase {
public init(javaHolder: JavaObjectHolder) {
self.javaHolder = javaHolder
}

public func `as`<OtherClass: AnyJavaObject>(_: OtherClass.Type) -> OtherClass {
return OtherClass(javaHolder: javaHolder)
}
}
""",
macros: Self.javaKitMacros
Expand Down
Loading