You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by je...@apache.org on 2017/07/31 22:40:12 UTC
thrift git commit: THRIFT-4269 Don't append '.' to Erlang namespace
if it ends in '_'. Client: Erlang Patch: David Hull
Repository: thrift
Updated Branches:
refs/heads/master 3ba4ecf3e -> ec2a25213
THRIFT-4269 Don't append '.' to Erlang namespace if it ends in '_'.
Client: Erlang
Patch: David Hull <da...@openx.com>
This closes #1319
Project: http://git-wip-us.apache.org/repos/asf/thrift/repo
Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/ec2a2521
Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/ec2a2521
Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/ec2a2521
Branch: refs/heads/master
Commit: ec2a252136cb864a9edb22ef895bd62ff29c53e1
Parents: 3ba4ecf
Author: David Hull <da...@openx.com>
Authored: Fri Jul 28 02:09:42 2017 +0200
Committer: Jens Geyer <je...@apache.org>
Committed: Tue Aug 1 00:38:55 2017 +0200
----------------------------------------------------------------------
.../cpp/src/thrift/generate/t_erl_generator.cc | 13 +++-----
lib/erl/Makefile.am | 1 +
lib/erl/test/test_const.erl | 34 ++++++++++++++++++++
test/ConstantsDemo.thrift | 1 +
4 files changed, 40 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/thrift/blob/ec2a2521/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 6054a4e..9a5ce16 100644
--- a/compiler/cpp/src/thrift/generate/t_erl_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_erl_generator.cc
@@ -1019,19 +1019,14 @@ string t_erl_generator::argument_list(t_struct* tstruct) {
}
string t_erl_generator::type_name(t_type* ttype) {
- string prefix = "";
- string erl_namespace = ttype->get_program()->get_namespace("erl");
-
- if (erl_namespace.length() > 0) {
- prefix = erl_namespace + ".";
+ string prefix = ttype->get_program()->get_namespace("erl");
+ size_t prefix_length = prefix.length();
+ if (prefix_length > 0 && prefix[prefix_length - 1] != '_') {
+ prefix += '.';
}
string name = ttype->get_name();
- if (ttype->is_struct() || ttype->is_xception() || ttype->is_service()) {
- name = ttype->get_name();
- }
-
return atomify(prefix + name);
}
http://git-wip-us.apache.org/repos/asf/thrift/blob/ec2a2521/lib/erl/Makefile.am
----------------------------------------------------------------------
diff --git a/lib/erl/Makefile.am b/lib/erl/Makefile.am
index 2502d31..92e2204 100644
--- a/lib/erl/Makefile.am
+++ b/lib/erl/Makefile.am
@@ -19,6 +19,7 @@
THRIFT = ../../compiler/cpp/thrift
THRIFT_FILES = $(wildcard test/*.thrift) \
+ ../../test/ConstantsDemo.thrift \
../../test/NameConflictTest.thrift \
../../test/ThriftTest.thrift
http://git-wip-us.apache.org/repos/asf/thrift/blob/ec2a2521/lib/erl/test/test_const.erl
----------------------------------------------------------------------
diff --git a/lib/erl/test/test_const.erl b/lib/erl/test/test_const.erl
new file mode 100644
index 0000000..ed0cf03
--- /dev/null
+++ b/lib/erl/test/test_const.erl
@@ -0,0 +1,34 @@
+%%
+%% Licensed to the Apache Software Foundation (ASF) under one
+%% or more contributor license agreements. See the NOTICE file
+%% distributed with this work for additional information
+%% regarding copyright ownership. The ASF licenses this file
+%% to you under the Apache License, Version 2.0 (the
+%% "License"); you may not use this file except in compliance
+%% with the License. You may obtain a copy of the License at
+%%
+%% http://www.apache.org/licenses/LICENSE-2.0
+%%
+%% Unless required by applicable law or agreed to in writing,
+%% software distributed under the License is distributed on an
+%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+%% KIND, either express or implied. See the License for the
+%% specific language governing permissions and limitations
+%% under the License.
+%%
+
+-module(test_const).
+
+-ifdef(TEST).
+-include_lib("eunit/include/eunit.hrl").
+
+-include("gen-erl/constants_demo_types.hrl").
+
+namespace_test() ->
+ %% Verify that records produced by ConstantsDemo.thrift have the right namespace.
+ io:format(user, "in namespace_test()\n", []),
+ {struct, _} = constants_demo_types:struct_info('consts_thing'),
+ {struct, _} = constants_demo_types:struct_info('consts_Blah'),
+ ok.
+
+-endif. %% TEST
http://git-wip-us.apache.org/repos/asf/thrift/blob/ec2a2521/test/ConstantsDemo.thrift
----------------------------------------------------------------------
diff --git a/test/ConstantsDemo.thrift b/test/ConstantsDemo.thrift
index b99bdb2..a54534d 100644
--- a/test/ConstantsDemo.thrift
+++ b/test/ConstantsDemo.thrift
@@ -18,6 +18,7 @@
*/
namespace cpp yozone
+namespace erl consts_
struct thing {
1: i32 hello,