On 26/12/2020 17:51, Luc Van Oostenryck wrote: > There is more than one complexity in the evaluation of enums. > > Add a test for enums with 'exotic' values non-covered in other tests. s/non-covered/not covered/ ATB, Ramsay Jones > > Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@xxxxxxxxx> > --- > validation/enum-type-exotic.c | 28 ++++++++++++++++++++++++++++ > 1 file changed, 28 insertions(+) > create mode 100644 validation/enum-type-exotic.c > > diff --git a/validation/enum-type-exotic.c b/validation/enum-type-exotic.c > new file mode 100644 > index 000000000000..a17ca0ad48ef > --- /dev/null > +++ b/validation/enum-type-exotic.c > @@ -0,0 +1,28 @@ > +enum foobar { > + C = (unsigned char)0, > + L = 1L, > +}; > + > +unsigned int foo(void); > +unsigned int foo(void) > +{ > +#ifdef __CHECKER__ > + _Static_assert([typeof(C)] == [enum foobar], "enum type"); > + _Static_assert([typeof(C)] != [unsigned char], "char type"); > +#endif > + > + typeof(C) v = ~0; > + return v; > +} > + > +/* > + * check-name: enum-type-exotic > + * check-description: > + * GCC type's for C is 'int' or maybe 'unsigned int' > + * but certainly not 'unsigned char' like here. > + * check-command: test-linearize -Wno-decl $file > + * check-known-to-fail > + * > + * check-output-ignore > + * check-output-excludes: ret\\.32 *\\$255 > + */ >