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,