rxgen: Generate default switch arm for void 98/14798/2
authorAndrew Deason <adeason@sinenomine.net>
Wed, 10 Feb 2021 22:42:16 +0000 (16:42 -0600)
committerBenjamin Kaduk <kaduk@mit.edu>
Thu, 16 Sep 2021 16:45:04 +0000 (12:45 -0400)
commitfd22b1720887d27f1d59f7c66e00f2e78cdfe49a
tree4edf2b496ebf1bb7fcdeb882324a0020448d889f
parent62de4c948c5e57f2b66290332bf5a91dd374514b
rxgen: Generate default switch arm for void

When defining an xdr union with a 'default' arm, rxgen generates xdr
routines like this:

    bool_t
    xdr_myunion(...)
    {
        switch (objp->op) {
        case FOO:
            xdr_foo(...);
            break;

        default:
            xdr_default(...);
            break;
        }
    }

However, if the default arm of the union is just 'void;', we just
don't generate a 'default:' arm in the switch statment in the
generated routines. If there are enum values that are not explicitly
specified, and are handled by the default arm, this generates a
compiler warning (which breaks the build for --enable-checking):

    foo_int.xdr.c:80:2 error: enumeration value 'BAR' not handled in switch [-Werror=switch]
    switch (objp->op) {

To avoid this, change rxgen to always generate a 'default' arm in the
generated switch if there's one specified in the RPC-L. For a void
default, just generate an empty default arm, which avoids the compiler
warning.

Change-Id: I6ac457a4669439ef896b9cad6eb7de2f03068b69
Reviewed-on: https://gerrit.openafs.org/14798
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
src/rxgen/rpc_cout.c