THRIFT-2106 Fix support for namespaces in GO generator
Patch: Emir Habul
diff --git a/lib/go/test/IncludesTest.thrift b/lib/go/test/IncludesTest.thrift
index 6c7308b..6f80e6b 100644
--- a/lib/go/test/IncludesTest.thrift
+++ b/lib/go/test/IncludesTest.thrift
@@ -18,17 +18,23 @@
#
include "ThriftTest.thrift"
+include "NamespacedTest.thrift"
const ThriftTest.UserId USERID = 42
+const NamespacedTest.UserId USERID1 = 41
const ThriftTest.MapType MAPCONSTANT = {'hello':{}, 'goodnight':{}}
+const i32 TWO = NamespacedTest.Stuff.TWO
+const i32 THREE = NamespacedTest.THREE
+
struct testStruct {
1: list<ThriftTest.Numberz> listNumbers
}
struct TestStruct2 {
1: testStruct blah,
- 2: ThriftTest.UserId id
+ 2: ThriftTest.UserId id,
+ 3: NamespacedTest.Stuff stuff,
}
service testService extends ThriftTest.SecondService {
@@ -42,4 +48,10 @@
service ExtendedService extends testService {
void extendedMethod(),
+ NamespacedTest.StuffStruct extendedMethod2(),
}
+
+service Extended2Service extends NamespacedTest.NamespacedService {
+ void extendedMethod3(),
+}
+
diff --git a/lib/go/test/Makefile.am b/lib/go/test/Makefile.am
index b5713c0..9005e99 100644
--- a/lib/go/test/Makefile.am
+++ b/lib/go/test/Makefile.am
@@ -21,12 +21,13 @@
THRIFTTEST = $(top_srcdir)/test/ThriftTest.thrift
# Thrift for GO has problems with complex map keys: THRIFT-2063
-gopath: $(THRIFT) $(THRIFTTEST) IncludesTest.thrift
+gopath: $(THRIFT) $(THRIFTTEST) IncludesTest.thrift NamespacedTest.thrift
mkdir -p gopath/src
grep -v list.*map.*list.*map $(THRIFTTEST) > ThriftTest.thrift
$(THRIFT) --gen go:thrift_import=thrift -r IncludesTest.thrift
ln -nfs ../../gen-go/ThriftTest gopath/src/ThriftTest
ln -nfs ../../gen-go/IncludesTest gopath/src/IncludesTest
+ ln -nfs ../../gen-go/lib gopath/src/lib
ln -nfs ../../../thrift gopath/src/thrift
touch gopath
diff --git a/lib/go/test/NamespacedTest.thrift b/lib/go/test/NamespacedTest.thrift
new file mode 100644
index 0000000..1bb2fc4
--- /dev/null
+++ b/lib/go/test/NamespacedTest.thrift
@@ -0,0 +1,40 @@
+#
+# 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.
+#
+
+include "ThriftTest.thrift"
+
+namespace go lib.go.test.NamespacedTest
+
+enum Stuff {
+ ONE = 1,
+ TWO = 2,
+}
+
+const i32 THREE = 3;
+
+typedef i64 UserId
+
+struct StuffStruct {
+ 2: Stuff stuff,
+}
+
+service NamespacedService {
+ ThriftTest.UserId getUserID(),
+}
+