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/OptionalFieldsTest.thrift b/lib/go/test/OptionalFieldsTest.thrift
new file mode 100644
index 0000000..25b0ef6
--- /dev/null
+++ b/lib/go/test/OptionalFieldsTest.thrift
@@ -0,0 +1,43 @@
+#
+# 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.
+#
+
+struct structA {
+ 1: required i64 sa_i
+}
+
+struct all_optional {
+ 1: optional string s = "DEFAULT",
+ 2: optional i64 i = 42,
+ 3: optional bool b = false,
+ 4: optional string s2,
+ 5: optional i64 i2,
+ 6: optional bool b2,
+ 7: optional structA aa,
+ 9: optional list<i64> l,
+ 10: optional list<i64> l2 = [1, 2],
+ 11: optional map<i64, i64> m,
+ 12: optional map<i64, i64> m2 = {1:2, 3:4},
+ 13: optional binary bin,
+ 14: optional binary bin2 = "asdf",
+}
+
+struct structB {
+ 1: required structA required_struct_thing
+ 2: optional structA optional_struct_thing
+}