tests/lint: show that in C23 mode, bool is not yet defined

The tests in C11 and C23 mode look the same right now but will change
soon.

The warnings in the C11 test disappeared because after the first error,
warnings about unused variables are suppressed by check_variable_usage,
as they are often wrong.
This commit is contained in:
rillig 2024-05-07 19:32:35 +00:00
parent 609bb2da52
commit fe6f732478
2 changed files with 51 additions and 8 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: c11.c,v 1.6 2024/01/28 08:17:27 rillig Exp $ */
/* $NetBSD: c11.c,v 1.7 2024/05/07 19:32:35 rillig Exp $ */
# 3 "c11.c"
/*
@ -8,6 +8,29 @@
/* lint1-flags: -Ac11 -w -X 192,231,236,351 */
int
bool_is_predefined_in_c23(void)
{
/* expect+1: error: syntax error 't' [249] */
bool t = true;
bool f = false;
/* expect+4: error: 't' undefined [99] */
/* expect+3: error: 'true' undefined [99] */
/* expect+2: error: 'f' undefined [99] */
/* expect+1: error: 'false' undefined [99] */
return (t == true ? 20 : 0) + (f == false ? 3 : 0);
}
int
c99_bool_is_still_valid_in_c23(void)
{
_Bool t = 1;
_Bool f = 0;
return (t == 1 ? 20 : 0) + (f == 0 ? 3 : 0);
}
_Noreturn void exit(int);
void _Noreturn exit(int);
@ -73,11 +96,9 @@ void fcompat(void)
int (*p)[4][n+1];
int c[n][n][6][m];
int (*r)[n][n][n+1];
/* expect+2: warning: illegal combination of 'pointer to array[4] of array[1] of int' and 'pointer to array[6] of array[1] of int', op '=' [124] */
/* expect+1: warning: 'p' set but not used in function 'fcompat' [191] */
/* expect+1: warning: illegal combination of 'pointer to array[4] of array[1] of int' and 'pointer to array[6] of array[1] of int', op '=' [124] */
p = a;
/* expect+2: warning: illegal combination of 'pointer to array[1] of array[1] of array[1] of int' and 'pointer to array[1] of array[6] of array[1] of int', op '=' [124] */
/* expect+1: warning: 'r' set but not used in function 'fcompat' [191] */
/* expect+1: warning: illegal combination of 'pointer to array[1] of array[1] of array[1] of int' and 'pointer to array[1] of array[6] of array[1] of int', op '=' [124] */
r = c;
}
@ -101,8 +122,7 @@ void fvla(int m, int C[m][m])
int (*s)[m];
/* expect+1: warning: nested 'extern' declaration of 'r' [352] */
extern int (*r)[m];
/* expect+2: warning: illegal combination of 'pointer to array[1] of int' and 'pointer to int', op 'init' [124] */
/* expect+1: warning: 'q' set but not used in function 'fvla' [191] */
/* expect+1: warning: illegal combination of 'pointer to array[1] of int' and 'pointer to int', op 'init' [124] */
static int (*q)[m] = &B;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: c23.c,v 1.8 2024/01/28 08:17:27 rillig Exp $ */
/* $NetBSD: c23.c,v 1.9 2024/05/07 19:32:35 rillig Exp $ */
# 3 "c23.c"
// Tests for the option -Ac23, which allows features from C23 and all earlier
@ -10,6 +10,29 @@
/* lint1-flags: -Ac23 -w -X 351 */
int
bool_is_predefined_in_c23(void)
{
/* expect+1: error: syntax error 't' [249] */
bool t = true;
bool f = false;
/* expect+4: error: 't' undefined [99] */
/* expect+3: error: 'true' undefined [99] */
/* expect+2: error: 'f' undefined [99] */
/* expect+1: error: 'false' undefined [99] */
return (t == true ? 20 : 0) + (f == false ? 3 : 0);
}
int
c99_bool_is_still_valid_in_c23(void)
{
_Bool t = 1;
_Bool f = 0;
return (t == 1 ? 20 : 0) + (f == 0 ? 3 : 0);
}
int
empty_initializer_braces(void)
{