You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by jk...@apache.org on 2018/03/09 23:33:00 UTC

[1/2] thrift git commit: THRIFT-4495: Allow `undefined` for non-required Erlang records fields. Client: erl

Repository: thrift
Updated Branches:
  refs/heads/master 50862915c -> fe50feae7


THRIFT-4495: Allow `undefined` for non-required Erlang records fields.
Client: erl

As of Erlang 19, the dialyzer static type-analysis tool no longer
implicitly adds `undefined` to the allowed types for a field.  This
means that dialyzer will now complain about any non-required fields
that are not explicitly initialed when creating a new record.

This closes #1494


Project: http://git-wip-us.apache.org/repos/asf/thrift/repo
Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/1918b21d
Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/1918b21d
Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/1918b21d

Branch: refs/heads/master
Commit: 1918b21d1c3d9d32dec5f4ce68990b106a79d84f
Parents: 5086291
Author: David Hull <da...@openx.com>
Authored: Tue Feb 13 01:11:24 2018 +0000
Committer: James E. King III <jk...@apache.org>
Committed: Fri Mar 9 18:31:49 2018 -0500

----------------------------------------------------------------------
 compiler/cpp/src/thrift/generate/t_erl_generator.cc | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/thrift/blob/1918b21d/compiler/cpp/src/thrift/generate/t_erl_generator.cc
----------------------------------------------------------------------
diff --git a/compiler/cpp/src/thrift/generate/t_erl_generator.cc b/compiler/cpp/src/thrift/generate/t_erl_generator.cc
index 372c78b..9e1e23d 100644
--- a/compiler/cpp/src/thrift/generate/t_erl_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_erl_generator.cc
@@ -810,6 +810,8 @@ void t_erl_generator::generate_erl_struct_member(ostream& out, t_field* tmember)
   if (has_default_value(tmember))
     out << " = " << render_member_value(tmember);
   out << " :: " << render_member_type(tmember);
+  if (tmember->get_req() != t_field::T_REQUIRED)
+    out << " | 'undefined'";
 }
 
 bool t_erl_generator::has_default_value(t_field* field) {


[2/2] thrift git commit: THRIFT-4497: Use `map()` field type for Erlang type for map struct fields. Client: erl

Posted by jk...@apache.org.
THRIFT-4497: Use `map()` field type for Erlang type for map struct fields.
Client: erl

The Thrift Erlang code generator previously generated fields with the
`#{}` Erlang type for maps fields.  In the Erlang type specification
languages, however, `#{}` specifically means an empty map.  This commit
fixes the code to emit `map()` instead, which means the maps keys and
values may be of any type.

It would be possible to emit a field type such as
`${keytype() => maptype()}`, but this commit does not do that.

This closes #1495


Project: http://git-wip-us.apache.org/repos/asf/thrift/repo
Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/fe50feae
Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/fe50feae
Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/fe50feae

Branch: refs/heads/master
Commit: fe50feae7e9cad31aeeda0f30c7007ede13647f0
Parents: 1918b21
Author: David Hull <da...@openx.com>
Authored: Wed Feb 14 03:41:35 2018 +0000
Committer: James E. King III <jk...@apache.org>
Committed: Fri Mar 9 18:32:36 2018 -0500

----------------------------------------------------------------------
 compiler/cpp/src/thrift/generate/t_erl_generator.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/thrift/blob/fe50feae/compiler/cpp/src/thrift/generate/t_erl_generator.cc
----------------------------------------------------------------------
diff --git a/compiler/cpp/src/thrift/generate/t_erl_generator.cc b/compiler/cpp/src/thrift/generate/t_erl_generator.cc
index 9e1e23d..2b644c9 100644
--- a/compiler/cpp/src/thrift/generate/t_erl_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_erl_generator.cc
@@ -717,7 +717,7 @@ string t_erl_generator::render_member_type(t_field* field) {
     return type_name(type) + "()";
   } else if (type->is_map()) {
     if (maps_) {
-      return "#{}";
+      return "map()";
     } else if (otp16_) {
       return "dict()";
     } else {