Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
Description
The assignment of more complex constants looks like not fully implemented. Here's a test case:
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) }
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.
Attachments
Issue Links
- is related to
-
THRIFT-2315 Defaults applied to service method arguments not working as expected
- Open