You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Vladimir Strisovsky (JIRA)" <ji...@apache.org> on 2013/08/05 11:02:47 UTC

[jira] [Updated] (THRIFT-2105) Generated code for default values of collections ignores t_field::T_REQUIRED

     [ https://issues.apache.org/jira/browse/THRIFT-2105?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Vladimir Strisovsky updated THRIFT-2105:
----------------------------------------

    Attachment: thrift-jira-thrift-2105-fixed_print_const_value.patch

Adding patch for issue in print_const_value ( t_cpp_generator.cpp) Jira Thrift-2105 issue, Please review it and push to main branch.
                
> Generated code for default values of collections ignores t_field::T_REQUIRED
> ----------------------------------------------------------------------------
>
>                 Key: THRIFT-2105
>                 URL: https://issues.apache.org/jira/browse/THRIFT-2105
>             Project: Thrift
>          Issue Type: Bug
>          Components: C++ - Compiler
>            Reporter: Vladimir Strisovsky
>         Attachments: thrift-jira-thrift-2105-fixed_print_const_value.patch
>
>
> I have very simple thrift structure:
> struct FloatProcessValue
> {
>     1: required ID id,
>     2: required Value value
> }
> FloatProcessValue contains only required fileds, so no __isset structure is generated. But when this structure is used in collection with some default values:
> 4: required map<i32, basic_types.FloatProcessValue> mapi32ToFloat = { 1:{'id':0, 'value':0.4}},
> compilation fails because constructor tries to set __isset.value and __isset.id
>      ::simpletest::FloatProcessValue tmp0;
>      ::simpletest::ID tmp1;
>     tmp1 = 0;
>     tmp0.id = tmp1;
>     tmp0.__isset.id = true; // error: ‘class simpletest::FloatProcessValue’ has no member named ‘__isset’
>      ::simpletest::Value tmp2;
>     tmp2 = 0.4;
>     tmp0.value = tmp2;
>     tmp0.__isset.value = true; error: ‘class simpletest::FloatProcessValue’ has no member named ‘__isset’

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira