File tree Expand file tree Collapse file tree 2 files changed +29
-8
lines changed Expand file tree Collapse file tree 2 files changed +29
-8
lines changed Original file line number Diff line number Diff line change @@ -34,7 +34,7 @@ extension JavaFieldMacro: AccessorMacro {
3434 }
3535
3636 let isStatic = node. attributeName. trimmedDescription == " JavaStaticField "
37- guard !isStatic || isInStaticContext ( context: context) else {
37+ guard !isStatic || isInJavaClassContext ( context: context) else {
3838 throw MacroExpansionErrorMessage ( " Cannot use @JavaStaticField outside of a JavaClass instance " )
3939 }
4040
@@ -85,14 +85,10 @@ extension JavaFieldMacro: AccessorMacro {
8585 return accessors
8686 }
8787
88- private static func isInStaticContext ( context: some MacroExpansionContext ) -> Bool {
88+ private static func isInJavaClassContext ( context: some MacroExpansionContext ) -> Bool {
8989 for lexicalContext in context. lexicalContext {
90- if let classSyntax = lexicalContext. as ( ClassDeclSyntax . self) {
91- if classSyntax. name. trimmedDescription. starts ( with: " JavaClass< " ) {
92- return true
93- } else {
94- return false
95- }
90+ if let classSyntax = lexicalContext. as ( ExtensionDeclSyntax . self) {
91+ return classSyntax. extendedType. trimmedDescription. starts ( with: " JavaClass< " )
9692 }
9793 }
9894
Original file line number Diff line number Diff line change @@ -56,6 +56,31 @@ class JavaKitMacroTests: XCTestCase {
5656 )
5757 }
5858
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+
5984 func testJavaClass( ) throws {
6085 assertMacroExpansion ( """
6186 @JavaClass( " org.swift.example.HelloWorld " )
You can’t perform that action at this time.
0 commit comments