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 f90abcb..324b1da 100644
--- a/compiler/cpp/src/generate/t_erl_generator.cc
+++ b/compiler/cpp/src/generate/t_erl_generator.cc
@@ -588,9 +588,13 @@
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 4aa7f72..7adeb7e 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 @@
15: double o = 3.14159,
16: list<string> string_list,
17: list<byte> byte_list = [1, 2, 3],
- 18: set<string> string_set,
- 19: map<string, string> string_map
+ 18: required list<string> rsl,
+ 19: optional list<string> osl,
+ 20: set<string> string_set,
+ 21: required set<string> rss,
+ 22: optional set<string> oss,
+ 23: map<string, string> string_map,
+ 24: required map<string, string> rsm,
+ 25: optional map<string, string> osm,
+ 26: StructB structb
}