[ https://issues.apache.org/jira/browse/THRIFT-4521?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Yan Zhulanow updated THRIFT-4521: --------------------------------- Description: Source: ``` struct Node { 1: string name; 2: list<Node> children; } ``` Generated code (partially, used Thrift 0.11.0): ``` @interface Node : NSObject <TBase, NSCoding, NSCopying> @property (strong, nonatomic) NSString * name; @property (assign, nonatomic) BOOL nameIsSet; - (void) unsetName; @property (strong, nonatomic) NSMutableArray<Node> * children; @property (assign, nonatomic) BOOL childrenIsSet; - (void) unsetChildren; ``` As you can see, NSMutableArray<Node> is not a valid type (NSMutableArray<Node *> * was expected), and the code doesn't compile. was: +Source:+ {{struct Node {}} {{ 1: string name;}} {{ 2: list<Node> children;}} +Generated code (partially, used Thrift 0.11.0):+ {{@interface Node : NSObject <TBase, NSCoding, NSCopying>}}{{@property (strong, nonatomic) NSString * name;}} {{ @property (assign, nonatomic) BOOL nameIsSet;}} {{- (void) unsetName;}} {{@property (strong, nonatomic) NSMutableArray<Node> * children;}} {{ @property (assign, nonatomic) BOOL childrenIsSet;}} {{- (void) unsetChildren;}} As you can see, NSMutableArray<Node> is not a valid type (_NSMutableArray<Node *> *_ expected), and the code doesn't compile. > Cocoa compiler produces invalid code for recursive structs > ---------------------------------------------------------- > > Key: THRIFT-4521 > URL: https://issues.apache.org/jira/browse/THRIFT-4521 > Project: Thrift > Issue Type: Bug > Components: Cocoa - Compiler > Affects Versions: 0.11.0 > Reporter: Yan Zhulanow > Priority: Major > > Source: > ``` > struct Node { > 1: string name; > 2: list<Node> children; > } > ``` > Generated code (partially, used Thrift 0.11.0): > ``` > @interface Node : NSObject <TBase, NSCoding, NSCopying> > @property (strong, nonatomic) NSString * name; > @property (assign, nonatomic) BOOL nameIsSet; > - (void) unsetName; > @property (strong, nonatomic) NSMutableArray<Node> * children; > @property (assign, nonatomic) BOOL childrenIsSet; > - (void) unsetChildren; > ``` > As you can see, NSMutableArray<Node> is not a valid type (NSMutableArray<Node > *> * was expected), and the code doesn't compile. -- This message was sent by Atlassian JIRA (v7.6.3#76005)