[ 
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)

Reply via email to