commit | e1ac2f46b872560992ddba08c2196e4dd64d07c4 | [log] [tgz] |
---|---|---|
author | Péter Szilágyi <peterke@gmail.com> | Wed Dec 07 14:24:54 2016 +0200 |
committer | Elias Naur <elias.naur@gmail.com> | Thu Dec 08 14:50:39 2016 +0000 |
tree | ec81fabb0d5e1229f3ad63e334c2a02e0b318c19 | |
parent | 72eef9d09307f0b437153fd152229f56edc0ab20 [diff] |
bind: don't use output arg for T in (T, error) returns if T is nullable The current iOS binding generator only generates returns if the function being bound does not return an error. If a second error return type is also present, the binder always generates both the primary as well as the error as an output parameter. This is undersirable because most decent functions in Go will also return errors, so all of those get converted to plain methods iOS side, each of them requiring allocating the return variable first and only then execute the call. This gets even more annoying with the Swift error wrapping protocol which converts errors to throw statements automatically, but which still needs the ugly pre- allocs caused by the genrated bindings not returning the result, just placing it in an output argument. This CL changes that so that if a nullable result is being returned by a bound method from Go, then it is generated as a proper return and not an output argument. This allows erroring functions to still be called as a function in ObjC, and even more elegantly drop even the error part in Swift. Change-Id: I35152d7d2fd2a132eba836fa23be8fd4f317f097 Reviewed-on: https://go-review.googlesource.com/34072 Reviewed-by: Elias Naur <elias.naur@gmail.com>
The Go mobile repository holds packages and build tools for using Go on mobile platforms.
Package documentation as a starting point:
The Go Mobile project is experimental. Use this at your own risk. While we are working hard to improve it, neither Google nor the Go team can provide end-user support.
This is early work and installing the build system requires Go 1.5. Follow the instructions on golang.org/wiki/Mobile to install the gomobile command, build the basic and the bind example apps.
Contributions to Go are appreciated. See https://golang.org/doc/contribute.html.