THRIFT-2451: Do not use pointers for optional fields with defaults. Do not write such fields if its value set to default. Also, do not use pointers for any optional fields mapped to go map or slice. generate Get accessors
Client: Go
Patch: Aleksey Pesternikov

This closes #101

commit e6e5dcf3a07cd931183991ff031179b425e2740b
 Author: Aleksey Pesternikov <ap@alekseys-mbp.att.net>
 Date: 2014-04-16T14:06:52Z

initial change

commit f65730e951a4310160a9f7e3e4eeb7e55abd2c55
 Author: Aleksey Pesternikov <ap@alekseys-mbp.att.net>
 Date: 2014-04-16T14:16:03Z

no IsSet for required

commit 9865f700eb9354d6053994da989a907766c42d1d
 Author: Aleksey Pesternikov <ap@alekseys-mbp.att.net>
 Date: 2014-04-17T19:32:13Z

inlined required structs

commit ca52300c07cefcf553f1ebf35569953c933b2367
 Author: Aleksey Pesternikov <ap@alekseys-mbp.att.net>
 Date: 2014-04-17T19:44:24Z

do not use heap for args struct

commit 012ca3e512d2bc8822de8a715b4f3d3cae5c0c42
 Author: Aleksey Pesternikov <ap@alekseys-mbp.att.net>
 Date: 2014-04-17T19:52:41Z

do not use heap for result struct

commit 2fc4afc53ff7db43e08eadeaa30e34bc1fd9c889
 Author: Aleksey Pesternikov <ap@alekseys-mbp.att.net>
 Date: 2014-04-17T21:32:43Z

do not set result field on error

commit 6e5da0062b139f02dcafe3148cdf02f97c23442a
 Author: Aleksey Pesternikov <ap@alekseys-mbp.att.net>
 Date: 2014-04-17T21:57:57Z

Jens' thrift source as test case

commit 7317957ed708831e280f182f081043fbe9d38a0c
 Author: Aleksey Pesternikov <ap@alekseys-macbook-pro.local>
 Date: 2014-04-17T23:43:08Z

support for cpp.ref

commit 1c4f3efc7b54fd335db633f86faf8c426ae9c87d
 Author: Aleksey Pesternikov <ap@alekseys-macbook-pro.local>
 Date: 2014-04-18T00:13:24Z

package flag

commit c9d7e54f5c5d29c776f42fb861bc9e82da4e542f
 Author: Aleksey Pesternikov <ap@alekseys-macbook-pro.local>
 Date: 2014-04-18T00:21:18Z

Merge branch 'master' into go_inlines
diff --git a/lib/go/test/ServicesTest.thrift b/lib/go/test/ServicesTest.thrift
new file mode 100644
index 0000000..1b8be36
--- /dev/null
+++ b/lib/go/test/ServicesTest.thrift
@@ -0,0 +1,109 @@
+#
+# 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.
+#
+
+# We are only testing that generated code compiles, no correctness checking is done
+
+exception moderate_disaster {
+  1: i32 errorCode,
+  2: string message
+}
+
+exception total_disaster {
+  1: string message
+  2: optional bool president_was_woken_up = false
+}
+
+struct struct_a {
+  1: required i64 whatever
+}
+
+service a_serv {
+	void voidfunc(),
+	void void_with_1ex() throws(1: moderate_disaster err1)
+	void void_with_2ex() throws(1: moderate_disaster err1, 2:total_disaster err2)
+
+	string stringfunc()
+	string stringfunc_1ex() throws(1: moderate_disaster err1)
+	string stringfunc_2ex() throws(1: moderate_disaster err1, 2:total_disaster err2)
+
+	i64 i64func()
+	i64 i64func_1ex() throws(1: moderate_disaster err1)
+	i64 i64func_2ex() throws(1: moderate_disaster err1, 2:total_disaster err2)
+
+	list<string> list_of_strings_func()
+	list<string> list_of_strings_func_1ex() throws(1: moderate_disaster err1)
+	list<string> list_of_strings_func_2ex() throws(1: moderate_disaster err1, 2:total_disaster err2)
+
+	map<i64,string> map_func()
+	map<i64,string> map_func_1ex() throws(1: moderate_disaster err1)
+	map<i64,string> map_func_2ex() throws(1: moderate_disaster err1, 2:total_disaster err2)
+
+	struct_a struct_a_func()
+	struct_a struct_a_func_1ex() throws(1: moderate_disaster err1)
+	struct_a struct_a_func_2ex() throws(1: moderate_disaster err1, 2:total_disaster err2)
+
+	void voidfunc_1int(1: i64 i),
+	void void_with_1ex_1int(1: i64 i) throws(1: moderate_disaster err1)
+	void void_with_2ex_1int(1: i64 i) throws(1: moderate_disaster err1, 2:total_disaster err2)
+
+	string stringfunc_1int(1: i64 i)
+	string stringfunc_1ex_1int(1: i64 i) throws(1: moderate_disaster err1)
+	string stringfunc_2ex_1int(1: i64 i) throws(1: moderate_disaster err1, 2:total_disaster err2)
+
+	i64 i64func_1int(1: i64 i)
+	i64 i64func_1ex_1int(1: i64 i) throws(1: moderate_disaster err1)
+	i64 i64func_2ex_1int(1: i64 i) throws(1: moderate_disaster err1, 2:total_disaster err2)
+
+	list<string> list_of_strings_func_1int(1: i64 i)
+	list<string> list_of_strings_func_1ex_1int(1: i64 i) throws(1: moderate_disaster err1)
+	list<string> list_of_strings_func_2ex_1int(1: i64 i) throws(1: moderate_disaster err1, 2:total_disaster err2)
+
+	map<i64,string> map_func_1int(1: i64 i)
+	map<i64,string> map_func_1ex_1int(1: i64 i) throws(1: moderate_disaster err1)
+	map<i64,string> map_func_2ex_1int(1: i64 i) throws(1: moderate_disaster err1, 2:total_disaster err2)
+
+	struct_a struct_a_func_1int(1: i64 i)
+	struct_a struct_a_func_1ex_1int(1: i64 i) throws(1: moderate_disaster err1)
+	struct_a struct_a_func_2ex_1int(1: i64 i) throws(1: moderate_disaster err1, 2:total_disaster err2)
+
+	void voidfunc_1int_1s(1: i64 i, 2: string s),
+	void void_with_1ex_1int_1s(1: i64 i, 2: string s) throws(1: moderate_disaster err1)
+	void void_with_2ex_1int_1s(1: i64 i, 2: string s) throws(1: moderate_disaster err1, 2:total_disaster err2)
+
+	string stringfunc_1int_1s(1: i64 i, 2: string s)
+	string stringfunc_1ex_1int_1s(1: i64 i, 2: string s) throws(1: moderate_disaster err1)
+	string stringfunc_2ex_1int_1s(1: i64 i, 2: string s) throws(1: moderate_disaster err1, 2:total_disaster err2)
+
+	i64 i64func_1int_1s(1: i64 i, 2: string s)
+	i64 i64func_1ex_1int_1s(1: i64 i, 2: string s) throws(1: moderate_disaster err1)
+	i64 i64func_2ex_1int_1s(1: i64 i, 2: string s) throws(1: moderate_disaster err1, 2:total_disaster err2)
+
+	list<string> list_of_strings_func_1int_1s(1: i64 i, 2: string s)
+	list<string> list_of_strings_func_1ex_1int_1s(1: i64 i, 2: string s) throws(1: moderate_disaster err1)
+	list<string> list_of_strings_func_2ex_1int_1s(1: i64 i, 2: string s) throws(1: moderate_disaster err1, 2:total_disaster err2)
+
+	map<i64,string> map_func_1int_1s(1: i64 i, 2: string s)
+	map<i64,string> map_func_1ex_1int_1s(1: i64 i, 2: string s) throws(1: moderate_disaster err1)
+	map<i64,string> map_func_2ex_1int_1s(1: i64 i, 2: string s) throws(1: moderate_disaster err1, 2:total_disaster err2)
+
+	struct_a struct_a_func_1int_1s(1: i64 i, 2: string s)
+	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)
+
+}