@@ -23,9 +23,64 @@ class JavaKitMacroTests: XCTestCase {
23
23
static let javaKitMacros : [ String : any Macro . Type ] = [
24
24
" JavaClass " : JavaClassMacro . self,
25
25
" JavaMethod " : JavaMethodMacro . self,
26
- " JavaField " : JavaFieldMacro . self
26
+ " JavaField " : JavaFieldMacro . self,
27
+ " JavaStaticField " : JavaFieldMacro . self
27
28
]
28
29
30
+ func testJavaStaticMethodFailure( ) throws {
31
+ assertMacroExpansion (
32
+ """
33
+ @JavaClass( " org.swift.example.HelloWorld " )
34
+ public class HelloWorld {
35
+ @JavaStaticField
36
+ public var test: String
37
+ }
38
+ """ ,
39
+ expandedSource: """
40
+
41
+ public class HelloWorld {
42
+ public var test: String
43
+
44
+ /// The full Java class name for this Swift type.
45
+ open override class var fullJavaClassName: String {
46
+ " org.swift.example.HelloWorld "
47
+ }
48
+
49
+ public required init(javaHolder: JavaObjectHolder) {
50
+ super.init(javaHolder: javaHolder)
51
+ }
52
+ }
53
+ """ ,
54
+ diagnostics: [ DiagnosticSpec ( message: " Cannot use @JavaStaticField outside of a JavaClass instance " , line: 3 , column: 5 ) ] ,
55
+ macros: Self . javaKitMacros
56
+ )
57
+ }
58
+
59
+ func testJavaStaticMethodSuccess( ) throws {
60
+ assertMacroExpansion (
61
+ """
62
+ extension JavaClass<HelloWorld> {
63
+ @JavaStaticField
64
+ public var test: String
65
+ }
66
+ """ ,
67
+ expandedSource: """
68
+
69
+ extension JavaClass<HelloWorld> {
70
+ public var test: String {
71
+ get {
72
+ self[javaFieldName: " test " , fieldType: String.self]
73
+ }
74
+ set {
75
+ self[javaFieldName: " test " , fieldType: String.self] = newValue
76
+ }
77
+ }
78
+ }
79
+ """ ,
80
+ macros: Self . javaKitMacros
81
+ )
82
+ }
83
+
29
84
func testJavaClass( ) throws {
30
85
assertMacroExpansion ( """
31
86
@JavaClass( " org.swift.example.HelloWorld " )
0 commit comments