You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Jens Geyer (JIRA)" <ji...@apache.org> on 2015/10/29 21:56:27 UTC
[jira] [Resolved] (THRIFT-3401) Nested collections emit Objective-C
code that cannot compile
[ https://issues.apache.org/jira/browse/THRIFT-3401?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jens Geyer resolved THRIFT-3401.
--------------------------------
Resolution: Fixed
Fix Version/s: 1.0
Committed.
> Nested collections emit Objective-C code that cannot compile
> ------------------------------------------------------------
>
> Key: THRIFT-3401
> URL: https://issues.apache.org/jira/browse/THRIFT-3401
> Project: Thrift
> Issue Type: Bug
> Components: Cocoa - Compiler
> Affects Versions: 1.0
> Environment: OS X 10.9 and 10.10
> Reporter: Steve Yegge
> Assignee: Kevin Wooten
> Priority: Critical
> Fix For: 1.0
>
> Original Estimate: 72h
> Remaining Estimate: 72h
>
> Nested Thrift collections produce nested generics in Objective-C. Unfortunately, Objective-C generics do not appear to support type nesting.
> For instance,
> 1: list<list<string>> foo
> generates an Objective-C declaration like this
> @property (strong, nonatomic) NSMutableArray<NSArray<NSString *>> * foo;
> which results in an XCode compile error: Type argument 'NSArray<NSString *>' is neither an Objective-C object nor a block type
> The only workaround is to edit the generated code to remove the nested type specifiers.
> Until Objective-C supports nesting generic types, the Thrift cocoa compiler should limit the type nesting to at most one level -- NSMutableArray<NSArray> is legal, for instance. Alternately, an easier solution might be to add a flag that disables the generation of generic types for cocoa.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)