import macros type Test_Type = object of RootObj Name_HIDDEN: string macro Name_Macro*(vType: untyped): untyped = let setterName = nnkAccQuoted.newTree("Name".ident, "=".ident) quote do: proc Name*(self: var `vType`): string = return self.Name_HIDDEN proc `setterName`*(self: var `vType`, vIndex: string) = self.Name_HIDDEN = vIndex Name_Macro(Test_Type) var tTest: Test_Type tTest.Name = "Hello" echo tTest.Name