Skip to content

Commit 374c847

Browse files
committed
JavaField macro: within a class, don't generate "nonmutating" modifier
1 parent 4b045b2 commit 374c847

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

Sources/JavaKitMacros/JavaFieldMacro.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,14 @@ extension JavaFieldMacro: AccessorMacro {
6464
getter
6565
]
6666

67+
let nonmutatingModifier =
68+
(context.lexicalContext.first?.is(ClassDeclSyntax.self) ?? false)
69+
? ""
70+
: "nonmutating "
71+
6772
if createSetter {
6873
let setter: AccessorDeclSyntax = """
69-
nonmutating set { self[javaFieldName: \(literal: fieldName), fieldType: \(fieldType).self] = newValue }
74+
\(raw: nonmutatingModifier)set { self[javaFieldName: \(literal: fieldName), fieldType: \(fieldType).self] = newValue }
7075
"""
7176
accessors.append(setter)
7277
}

Tests/JavaKitMacroTests/JavaClassMacroTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,15 +167,15 @@ class JavaKitMacroTests: XCTestCase {
167167
get {
168168
self[javaFieldName: "myField", fieldType: Int64.self]
169169
}
170-
nonmutating set {
170+
set {
171171
self[javaFieldName: "myField", fieldType: Int64.self] = newValue
172172
}
173173
}
174174
public var objectField: JavaObject! {
175175
get {
176176
self[javaFieldName: "objectField", fieldType: JavaObject?.self]
177177
}
178-
nonmutating set {
178+
set {
179179
self[javaFieldName: "objectField", fieldType: JavaObject?.self] = newValue
180180
}
181181
}

0 commit comments

Comments
 (0)