Skip to content

Commit d56bb3d

Browse files
committed
Update Text
1 parent 760c3e5 commit d56bb3d

File tree

2 files changed

+22
-11
lines changed

2 files changed

+22
-11
lines changed

Sources/JavaKitMacros/JavaFieldMacro.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ extension JavaFieldMacro: AccessorMacro {
3333
return []
3434
}
3535

36-
let isStatic = node.attributeName.trimmedDescription == "JavaStaticMethod"
36+
let isStatic = node.attributeName.trimmedDescription == "JavaStaticField"
3737
guard !isStatic || isInStaticContext(context: context) else {
38-
throw MacroExpansionErrorMessage("Cannot use @JavaStaticMethod outside of a JavaClass instance")
38+
throw MacroExpansionErrorMessage("Cannot use @JavaStaticField outside of a JavaClass instance")
3939
}
4040

4141
// Dig out the Java field name, if provided. Otherwise, use the name as written.
@@ -87,8 +87,8 @@ extension JavaFieldMacro: AccessorMacro {
8787

8888
private static func isInStaticContext(context: some MacroExpansionContext) -> Bool {
8989
for lexicalContext in context.lexicalContext {
90-
if let classSyntax = lexicalContext.as(StructDeclSyntax.self) {
91-
if classSyntax.name.trimmedDescription.starts(with: "JavaClass") {
90+
if let classSyntax = lexicalContext.as(ClassDeclSyntax.self) {
91+
if classSyntax.name.trimmedDescription.starts(with: "JavaClass<") {
9292
return true
9393
} else {
9494
return false

Tests/JavaKitMacroTests/JavaClassMacroTests.swift

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,24 +23,35 @@ class JavaKitMacroTests: XCTestCase {
2323
static let javaKitMacros: [String: any Macro.Type] = [
2424
"JavaClass": JavaClassMacro.self,
2525
"JavaMethod": JavaMethodMacro.self,
26-
"JavaField": JavaFieldMacro.self
26+
"JavaField": JavaFieldMacro.self,
27+
"JavaStaticField": JavaFieldMacro.self
2728
]
2829

2930
func testJavaStaticMethodFailure() throws {
3031
assertMacroExpansion(
3132
"""
3233
@JavaClass("org.swift.example.HelloWorld")
33-
public struct HelloWorld {
34-
@JavaStaticMethod
35-
public init(environment: JNIEnvironment? = nil)
34+
public class HelloWorld {
35+
@JavaStaticField
36+
public var test: String
3637
}
3738
""",
3839
expandedSource: """
39-
40-
public struct HelloWorld {
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+
}
4152
}
4253
""",
43-
diagnostics: [DiagnosticSpec(message: "", line: 0, column: 0)],
54+
diagnostics: [DiagnosticSpec(message: "Cannot use @JavaStaticField outside of a JavaClass instance", line: 3, column: 5)],
4455
macros: Self.javaKitMacros
4556
)
4657
}

0 commit comments

Comments
 (0)