1*7caac601Srillig /* $NetBSD: queries_uchar.c,v 1.2 2024/01/28 08:54:27 rillig Exp $ */
22bb36c11Srillig # 3 "queries_uchar.c"
32bb36c11Srillig
42bb36c11Srillig /*
52bb36c11Srillig * Tests for queries that are specific to platforms where 'char' has the same
62bb36c11Srillig * representation as 'unsigned char'.
72bb36c11Srillig *
82bb36c11Srillig * See also:
92bb36c11Srillig * queries.c platform-independent tests
102bb36c11Srillig * queries_schar.c for platforms where 'char' is signed
112bb36c11Srillig */
122bb36c11Srillig
132bb36c11Srillig /* lint1-only-if: uchar */
14*7caac601Srillig /* lint1-extra-flags: -q 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 -X 351 */
152bb36c11Srillig
162bb36c11Srillig int
Q14(char c)172bb36c11Srillig Q14(char c)
182bb36c11Srillig {
192bb36c11Srillig /* expect+6: implicit conversion changes sign from 'char' to 'int' [Q3] */
202bb36c11Srillig /* expect+5: implicit conversion changes sign from 'char' to 'int' [Q3] */
21*7caac601Srillig /* expect+4: comparison '==' of 'char' with plain integer 92 [Q14] */
22*7caac601Srillig /* expect+3: implicit conversion changes sign from 'char' to 'int' [Q3] */
23*7caac601Srillig /* expect+2: comparison '==' of 'char' with plain integer 0 [Q14] */
24*7caac601Srillig /* expect+1: implicit conversion changes sign from 'char' to 'int' [Q3] */
252bb36c11Srillig if (c == 'c' || c == L'w' || c == 92 || c == 0)
262bb36c11Srillig return 1;
272bb36c11Srillig return 5;
282bb36c11Srillig }
292bb36c11Srillig
302bb36c11Srillig /*
31*7caac601Srillig * Variables with automatic storage duration often have so small scope that
32*7caac601Srillig * adding the 'const' qualifier hurts readability more than it helps.
33*7caac601Srillig */
34*7caac601Srillig int
35*7caac601Srillig /* expect+1: const automatic variable 'const_arg' [Q18] */
Q18(const int const_arg,int arg)36*7caac601Srillig Q18(const int const_arg, int arg)
37*7caac601Srillig {
38*7caac601Srillig /* expect+1: const automatic variable 'Q18_scalar' [Q18] */
39*7caac601Srillig const char Q18_scalar = '1';
40*7caac601Srillig const char Q18_array[] = { '1', '2', '3' };
41*7caac601Srillig const char Q18_string[] = "123";
42*7caac601Srillig const char *Q18_string_pointer = "123";
43*7caac601Srillig
44*7caac601Srillig /* expect+5: implicit conversion changes sign from 'char' to 'int' [Q3] */
45*7caac601Srillig /* expect+4: implicit conversion changes sign from 'char' to 'int' [Q3] */
46*7caac601Srillig /* expect+3: implicit conversion changes sign from 'char' to 'int' [Q3] */
47*7caac601Srillig /* expect+2: implicit conversion changes sign from 'char' to 'int' [Q3] */
48*7caac601Srillig return const_arg + arg
49*7caac601Srillig + Q18_scalar + Q18_array[0] + Q18_string[0] + Q18_string_pointer[0];
50*7caac601Srillig }
51*7caac601Srillig
52*7caac601Srillig /*
532bb36c11Srillig * Since queries do not affect the exit status, force a warning to make this
542bb36c11Srillig * test conform to the general expectation that a test that produces output
552bb36c11Srillig * exits non-successfully.
562bb36c11Srillig */
572bb36c11Srillig /* expect+1: warning: static variable 'unused' unused [226] */
582bb36c11Srillig static int unused;
59