File tree Expand file tree Collapse file tree 3 files changed +17
-2
lines changed Expand file tree Collapse file tree 3 files changed +17
-2
lines changed Original file line number Diff line number Diff line change 3737 named ( javaThis) ,
3838 named ( javaEnvironment) ,
3939 named ( init ( javaHolder: ) ) ,
40- named ( JavaSuperclass)
40+ named ( JavaSuperclass) ,
41+ named ( `as`)
4142)
4243@attached ( extension, conformances: AnyJavaObject)
4344@attached ( peer)
@@ -73,7 +74,8 @@ public macro JavaClass(
7374 named ( javaThis) ,
7475 named ( javaEnvironment) ,
7576 named ( init ( javaHolder: ) ) ,
76- named ( JavaSuperclass)
77+ named ( JavaSuperclass) ,
78+ named ( `as`)
7779)
7880@attached ( extension, conformances: AnyJavaObject)
7981public macro JavaInterface( _ fullClassName: String , extends: ( any AnyJavaObject . Type ) ? ... ) =
Original file line number Diff line number Diff line change @@ -87,13 +87,21 @@ extension JavaClassMacro: MemberMacro {
8787 }
8888 """
8989
90+ let nonOptionalAs : DeclSyntax = """
91+ /// Casting to `` \( raw: superclass) `` will never be nil because `` \( raw: className. split ( separator: " . " ) . last!) `` extends it.
92+ public func `as`(_: \( raw: superclass) .Type) -> \( raw: superclass) {
93+ return \( raw: superclass) (javaHolder: javaHolder)
94+ }
95+ """
96+
9097 return [
9198 fullJavaClassNameMember,
9299 superclassTypealias,
93100 javaHolderMember,
94101 javaThisMember,
95102 javaEnvironmentMember,
96103 initMember,
104+ nonOptionalAs,
97105 ]
98106 }
99107}
Original file line number Diff line number Diff line change @@ -78,6 +78,11 @@ class JavaKitMacroTests: XCTestCase {
7878 public init(javaHolder: JavaObjectHolder) {
7979 self.javaHolder = javaHolder
8080 }
81+
82+ /// Casting to ``JavaObject`` will never be nil because ``HelloWorld`` extends it.
83+ public func `as`(_: JavaObject.Type) -> JavaObject {
84+ return JavaObject(javaHolder: javaHolder)
85+ }
8186 }
8287 """ ,
8388 macros: Self . javaKitMacros
You can’t perform that action at this time.
0 commit comments