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 37
37
named ( javaThis) ,
38
38
named ( javaEnvironment) ,
39
39
named ( init ( javaHolder: ) ) ,
40
- named ( JavaSuperclass)
40
+ named ( JavaSuperclass) ,
41
+ named ( `as`)
41
42
)
42
43
@attached ( extension, conformances: AnyJavaObject)
43
44
@attached ( peer)
@@ -73,7 +74,8 @@ public macro JavaClass(
73
74
named ( javaThis) ,
74
75
named ( javaEnvironment) ,
75
76
named ( init ( javaHolder: ) ) ,
76
- named ( JavaSuperclass)
77
+ named ( JavaSuperclass) ,
78
+ named ( `as`)
77
79
)
78
80
@attached ( extension, conformances: AnyJavaObject)
79
81
public 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 {
87
87
}
88
88
"""
89
89
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
+
90
97
return [
91
98
fullJavaClassNameMember,
92
99
superclassTypealias,
93
100
javaHolderMember,
94
101
javaThisMember,
95
102
javaEnvironmentMember,
96
103
initMember,
104
+ nonOptionalAs,
97
105
]
98
106
}
99
107
}
Original file line number Diff line number Diff line change @@ -78,6 +78,11 @@ class JavaKitMacroTests: XCTestCase {
78
78
public init(javaHolder: JavaObjectHolder) {
79
79
self.javaHolder = javaHolder
80
80
}
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
+ }
81
86
}
82
87
""" ,
83
88
macros: Self . javaKitMacros
You can’t perform that action at this time.
0 commit comments