%property with custom setter results in compiler error
Closed this issue · 2 comments
DavidGoldman commented
Problem: When specifying a custom setter for a %property
, Logos puts the :
in the generated method name (when it shouldn't).
Code:
%group Foo
%hook NSObject
%property(nonatomic, retain, setter=my_Setter:) id obj;
%end
%end
Error:
file.xm:71:231: error: variable has incomplete type 'void'
...{ return (id)objc_getAssociatedObject(self, (void *)_logos_method$Foo$NSObject$obj); }; __attribute__((used)) static void _logos_method...
^
file.xm:71:267: error: expected ';' after top level declarator
...(void *)_logos_method$Foo$NSObject$obj); }; __attribute__((used)) static void _logos_method$Foo$NSObject$my_Setter:(NSObject * __unuse...
^
;
file.xm:71:278: error: expected ')'
...(void *)_logos_method$Foo$NSObject$obj); }; __attribute__((used)) static void _logos_method$Foo$NSObject$my_Setter:(NSObject * __unuse...
^
file.xm:71:268: note: to match this '('
...(void *)_logos_method$Foo$NSObject$obj); }; __attribute__((used)) static void _logos_method$Foo$NSObject$my_Setter:(NSObject * __unuse...
^
file.xm:71:269: error: C++ requires a type specifier for all declarations
...(void *)_logos_method$Foo$NSObject$obj); }; __attribute__((used)) static void _logos_method$Foo$NSObject$my_Setter:(NSObject * __unuse...
^
file.xm:71:326: error: expected ';' after top level declarator
...static void _logos_method$Foo$NSObject$my_Setter:(NSObject * __unused self, SEL __unused _cmd, id rawValue) { objc_setAssociatedObject(...
^
;
uroboro commented
Custom getter/setter names are given without colon. Replace
%property(nonatomic, retain, setter=my_Setter:) id obj;
^
with
%property(nonatomic, retain, setter=my_Setter) id obj;
uroboro commented
Oh no, it isn't. Logos should remove it then.