Jens Geyer created THRIFT-2374: ---------------------------------- Summary: Referenced constants Key: THRIFT-2374 URL: https://issues.apache.org/jira/browse/THRIFT-2374 Project: Thrift Issue Type: Bug Components: C# - Compiler, C++ - Compiler, Compiler (General), Delphi - Compiler Reporter: Jens Geyer
The assignment of more complex constants looks like not fully implemented. Here's a test case: {code:title=testcase.thrift} struct thing { 1: i32 hello, 2: i32 goodbye } const map<i32,thing> GEN_WHAT = { 35 : { 'hello' : 325, 'goodbye' : 325352 } } struct Foo { 1: map<i32,thing> complex = GEN_WHAT } service Bar { void Baz( 4: map<i32,thing> complex = GEN_WHAT) } {code} At least for the languages I tested (C++, C# and Delphi) there is no code generated to assign the {{GEN_WHAT}} constant at all, altough it is used at two places in the IDL. I have not checked all the other languages, but there are very likely some more candidates around. The problem can be solved by testing against {{CV_IDENTIFIER}} and proper treatment of that special case in all of the affected places. *Remarks:* * Regarding the service args, there's a general problem for which another ticket exists: THRIFT-2315. * I already fixed the HTML compiler with THRIFT-2370. -- This message was sent by Atlassian JIRA (v6.1.5#6160)