On Sat, Sep 05, 2020 at 08:40:59PM -0500, Eric Blake wrote:
Now that we have a distinct branch in the generator when returning an enum or bitmask that cannot fail, we can use it in Golang for symmetry, so that the result of a get function can be plugged into a set function without a trip through other types. --- generator/GoLang.ml | 12 ++++++------ .../libnbd/libnbd_110_defaults_test.go | 6 +++--- .../libnbd/libnbd_120_set_non_defaults_test.go | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/generator/GoLang.ml b/generator/GoLang.ml index 732b81f..aecd2d5 100644 --- a/generator/GoLang.ml +++ b/generator/GoLang.ml @@ -99,8 +99,8 @@ let go_ret_type = function * always nil unless h is closed *) | RUInt -> Some "uint" - | REnum (_) -> Some "uint" (* XXX return typed constant instead? *) - | RFlags (_) -> Some "uint" (* XXX return typed constant instead? *) + | REnum ({ enum_prefix}) -> Some (camel_case enum_prefix) + | RFlags ({ flag_prefix}) -> Some (camel_case flag_prefix)
let go_ret_error = function | RErr -> None @@ -393,10 +393,10 @@ let print_binding (name, { args; optargs; ret; shortdesc }) = pr " return &r, nil\n" | RUInt -> pr " return uint (ret), nil\n" - | REnum (_) -> - pr " return uint (ret), nil\n" (* XXX Proper enum type? *) - | RFlags (_) -> - pr " return uint (ret), nil\n" (* XXX Proper bitmask type? *) + | REnum ({enum_prefix}) -> + pr " return %s (ret), nil\n" (camel_case enum_prefix) + | RFlags ({flag_prefix}) -> + pr " return %s (ret), nil\n" (camel_case flag_prefix) ); pr "}\n"; pr "\n" diff --git a/golang/src/libguestfs.org/libnbd/libnbd_110_defaults_test.go b/golang/src/libguestfs.org/libnbd/libnbd_110_defaults_test.go index 7b4ea0a..005289b 100644 --- a/golang/src/libguestfs.org/libnbd/libnbd_110_defaults_test.go +++ b/golang/src/libguestfs.org/libnbd/libnbd_110_defaults_test.go @@ -47,7 +47,7 @@ func Test110Defaults(t *testing.T) { if err != nil { t.Fatalf("could not get tls state: %s", err) } - if tls != uint(TLS_DISABLE) { + if tls != TLS_DISABLE { t.Fatalf("unexpected tls state") }
@@ -63,8 +63,8 @@ func Test110Defaults(t *testing.T) { if err != nil { t.Fatalf("could not get handshake flags: %s", err) } - if flags != uint(HANDSHAKE_FLAG_FIXED_NEWSTYLE | - HANDSHAKE_FLAG_NO_ZEROES) { + if flags != (HANDSHAKE_FLAG_FIXED_NEWSTYLE | + HANDSHAKE_FLAG_NO_ZEROES) { t.Fatalf("unexpected handshake flags") }
diff --git a/golang/src/libguestfs.org/libnbd/libnbd_120_set_non_defaults_test.go b/golang/src/libguestfs.org/libnbd/libnbd_120_set_non_defaults_test.go index 331304e..685604e 100644 --- a/golang/src/libguestfs.org/libnbd/libnbd_120_set_non_defaults_test.go +++ b/golang/src/libguestfs.org/libnbd/libnbd_120_set_non_defaults_test.go @@ -64,7 +64,7 @@ func Test120SetNonDefaults(t *testing.T) { if err != nil { t.Fatalf("could not get tls state: %s", err) } - if tls != uint(TLS_ALLOW) { + if tls != TLS_ALLOW { t.Fatalf("unexpected tls state") } }
Seems reasonable. I suppose the test case would fail if it was wrong, so ACK. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-p2v converts physical machines to virtual machines. Boot with a live CD or over the network (PXE) and turn machines into KVM guests. http://libguestfs.org/virt-v2v