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 {