From: Anthony F. Molinaro Date: Thu, 22 Mar 2012 06:48:33 +0000 (+0000) Subject: THRIFT-1532 - slightly better fix, take into account requiredness when adding default... X-Git-Tag: 0.9.1~424 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=3bba214c1358b634187cb7a43a5a6b2156013c55;p=common%2Fthrift.git THRIFT-1532 - slightly better fix, take into account requiredness when adding default values git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1303666 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/compiler/cpp/src/generate/t_erl_generator.cc b/compiler/cpp/src/generate/t_erl_generator.cc index f90abcba..324b1dab 100644 --- a/compiler/cpp/src/generate/t_erl_generator.cc +++ b/compiler/cpp/src/generate/t_erl_generator.cc @@ -588,9 +588,13 @@ void t_erl_generator::generate_erl_struct_member(ostream & out, t_field * tmembe bool t_erl_generator::has_default_value(t_field * field) { t_type *type = field->get_type(); if (!field->get_value()) { - if (type->is_struct() || type->is_xception() || type->is_map() || - type->is_set() || type->is_list()) { - return true; + if ( field->get_req() == t_field::T_REQUIRED) { + if (type->is_struct() || type->is_xception() || type->is_map() || + type->is_set() || type->is_list()) { + return true; + } else { + return false; + } } else { return false; } diff --git a/lib/erl/test/Thrift1475.thrift b/lib/erl/test/Thrift1475.thrift index 4aa7f724..7adeb7e6 100644 --- a/lib/erl/test/Thrift1475.thrift +++ b/lib/erl/test/Thrift1475.thrift @@ -1,3 +1,8 @@ +struct StructB +{ + 1: string x +} + struct StructA { 1: string a, @@ -17,6 +22,13 @@ struct StructA 15: double o = 3.14159, 16: list string_list, 17: list byte_list = [1, 2, 3], - 18: set string_set, - 19: map string_map + 18: required list rsl, + 19: optional list osl, + 20: set string_set, + 21: required set rss, + 22: optional set oss, + 23: map string_map, + 24: required map rsm, + 25: optional map osm, + 26: StructB structb }