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 2014/02/22 21:06:19 UTC

[jira] [Created] (THRIFT-2374) Referenced constants

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)