THRIFT-2505 go struct should always be a pointer to avoid copying of potentially size-unbounded structs
Client: Go
Patch: Aleksey Pesternikov
This closes #116
commit 69bbf0e2b148cb1f48e24f46d181cc4d5dc35786
Author: Aleksey Pesternikov <ap@alekseys-mbp.att.net>
Date: 2014-05-02T15:45:15Z
struct should always be a pointer to avoid copying of potentially size-unbounded structs
diff --git a/lib/go/test/ServicesTest.thrift b/lib/go/test/ServicesTest.thrift
index 1b8be36..c79f472 100644
--- a/lib/go/test/ServicesTest.thrift
+++ b/lib/go/test/ServicesTest.thrift
@@ -106,4 +106,6 @@
struct_a struct_a_func_1ex_1int_1s(1: i64 i, 2: string s) throws(1: moderate_disaster err1)
struct_a struct_a_func_2ex_1int_1s(1: i64 i, 2: string s) throws(1: moderate_disaster err1, 2:total_disaster err2)
+ struct_a struct_a_func_1struct_a(1: struct_a st)
+
}
diff --git a/lib/go/test/tests/struct_args_rets_test.go b/lib/go/test/tests/struct_args_rets_test.go
new file mode 100644
index 0000000..c965865
--- /dev/null
+++ b/lib/go/test/tests/struct_args_rets_test.go
@@ -0,0 +1,36 @@
+#
+# 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.
+#
+
+package tests
+
+import (
+ st "ServicesTest"
+)
+
+//this function is never called, it will fail to compile if check is failed
+func staticCheckStructArgsResults() {
+ //Check that struct args and results are passed by reference
+ var sa *st.StructA = &st.StructA{}
+ var iface st.AServ
+ var err error
+
+ sa, err = iface.StructAFunc_1structA(sa)
+ _ = err
+ _ = sa
+}