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
 }