[
https://issues.apache.org/jira/browse/THRIFT-2374?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17076405#comment-17076405
]
Zezeng Wang commented on THRIFT-2374:
-------------------------------------
I found that c ++ has code to deal with this scenario :
[https://github.com/apache/thrift/blob/master/compiler/cpp/src/thrift/generate/t_cpp_generator.cc#L1148-L1153
,|https://github.com/apache/thrift/blob/master/compiler/cpp/src/thrift/generate/t_cpp_generator.cc#L1148-L1153]
but the condition *if (!t->is_base_type())* is always equal to false even the
type is complex...
> No code generated for defaults when complex constants are referenced
> --------------------------------------------------------------------
>
> Key: THRIFT-2374
> URL: https://issues.apache.org/jira/browse/THRIFT-2374
> Project: Thrift
> Issue Type: Bug
> Components: C# - Compiler, C++ - Compiler, Compiler (General)
> Reporter: Jens Geyer
> Priority: Major
>
> 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
(v8.3.4#803005)