Module Name: src Committed By: rillig Date: Sat Nov 30 11:27:20 UTC 2024
Modified Files: src/tests/usr.bin/xlint/lint1: c11.c c23.c c90.c decl.c msg_004.c msg_068.c msg_217.c queries.c Log Message: tests/lint: add a few more tests to increase code coverage To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/tests/usr.bin/xlint/lint1/c11.c cvs rdiff -u -r1.16 -r1.17 src/tests/usr.bin/xlint/lint1/c23.c cvs rdiff -u -r1.3 -r1.4 src/tests/usr.bin/xlint/lint1/c90.c cvs rdiff -u -r1.32 -r1.33 src/tests/usr.bin/xlint/lint1/decl.c \ src/tests/usr.bin/xlint/lint1/queries.c cvs rdiff -u -r1.8 -r1.9 src/tests/usr.bin/xlint/lint1/msg_004.c cvs rdiff -u -r1.5 -r1.6 src/tests/usr.bin/xlint/lint1/msg_068.c cvs rdiff -u -r1.15 -r1.16 src/tests/usr.bin/xlint/lint1/msg_217.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/tests/usr.bin/xlint/lint1/c11.c diff -u src/tests/usr.bin/xlint/lint1/c11.c:1.7 src/tests/usr.bin/xlint/lint1/c11.c:1.8 --- src/tests/usr.bin/xlint/lint1/c11.c:1.7 Tue May 7 19:32:35 2024 +++ src/tests/usr.bin/xlint/lint1/c11.c Sat Nov 30 11:27:20 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: c11.c,v 1.7 2024/05/07 19:32:35 rillig Exp $ */ +/* $NetBSD: c11.c,v 1.8 2024/11/30 11:27:20 rillig Exp $ */ # 3 "c11.c" /* @@ -166,6 +166,9 @@ void f3(double a[restrict 3][5]); void f4(double a[restrict static 3][5]); +int _Alignas(double) int_aligned_as_double; + + // In C11 mode, 'thread_local' is not yet known, but '_Thread_local' is. /* expect+2: error: old-style declaration; add 'int' [1] */ /* expect+1: error: syntax error 'int' [249] */ Index: src/tests/usr.bin/xlint/lint1/c23.c diff -u src/tests/usr.bin/xlint/lint1/c23.c:1.16 src/tests/usr.bin/xlint/lint1/c23.c:1.17 --- src/tests/usr.bin/xlint/lint1/c23.c:1.16 Mon Jun 17 22:11:09 2024 +++ src/tests/usr.bin/xlint/lint1/c23.c Sat Nov 30 11:27:20 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: c23.c,v 1.16 2024/06/17 22:11:09 rillig Exp $ */ +/* $NetBSD: c23.c,v 1.17 2024/11/30 11:27:20 rillig Exp $ */ # 3 "c23.c" // Tests for the option -Ac23, which allows features from C23 and all earlier @@ -161,6 +161,15 @@ attributes(int i) // There may be multiple attribute specifier sequences in a row. [[]][[]][[]]i++; + // An attribute may occur more than once. + [[ + maybe_unused, maybe_unused, maybe_unused, maybe_unused, + maybe_unused, maybe_unused, maybe_unused, maybe_unused, + maybe_unused, maybe_unused, maybe_unused, maybe_unused, + maybe_unused, maybe_unused, maybe_unused, maybe_unused, + maybe_unused, maybe_unused, maybe_unused, maybe_unused, + ]]i++; + return i; } Index: src/tests/usr.bin/xlint/lint1/c90.c diff -u src/tests/usr.bin/xlint/lint1/c90.c:1.3 src/tests/usr.bin/xlint/lint1/c90.c:1.4 --- src/tests/usr.bin/xlint/lint1/c90.c:1.3 Sat Aug 26 10:43:53 2023 +++ src/tests/usr.bin/xlint/lint1/c90.c Sat Nov 30 11:27:20 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: c90.c,v 1.3 2023/08/26 10:43:53 rillig Exp $ */ +/* $NetBSD: c90.c,v 1.4 2024/11/30 11:27:20 rillig Exp $ */ # 3 "c90.c" /* @@ -10,3 +10,10 @@ /* expect+1: error: C90 to C17 require formal parameter before '...' [84] */ void varargs_function(...); + +int +compound_literal(void) +{ + /* expect+1: error: compound literals are a C99/GCC extension [319] */ + return (int){123}; +} Index: src/tests/usr.bin/xlint/lint1/decl.c diff -u src/tests/usr.bin/xlint/lint1/decl.c:1.32 src/tests/usr.bin/xlint/lint1/decl.c:1.33 --- src/tests/usr.bin/xlint/lint1/decl.c:1.32 Sat Nov 30 10:43:49 2024 +++ src/tests/usr.bin/xlint/lint1/decl.c Sat Nov 30 11:27:20 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: decl.c,v 1.32 2024/11/30 10:43:49 rillig Exp $ */ +/* $NetBSD: decl.c,v 1.33 2024/11/30 11:27:20 rillig Exp $ */ # 3 "decl.c" /* @@ -311,3 +311,12 @@ void static_function(void) { } + + +typedef void (*fprint_function)(int, const char *, ...); +typedef fprint_function (*change_logger) + (fprint_function, fprint_function, fprint_function, fprint_function); + +// Provoke a long type name to test reallocation in type_name. +/* expect+1: error: redeclaration of 'static_function' with type 'function(pointer to function(pointer to function(int, pointer to const char, ...) returning void, pointer to function(int, pointer to const char, ...) returning void, pointer to function(int, pointer to const char, ...) returning void, pointer to function(int, pointer to const char, ...) returning void) returning pointer to function(int, pointer to const char, ...) returning void) returning void', expected 'function(void) returning void' [347] */ +void static_function(change_logger); Index: src/tests/usr.bin/xlint/lint1/queries.c diff -u src/tests/usr.bin/xlint/lint1/queries.c:1.32 src/tests/usr.bin/xlint/lint1/queries.c:1.33 --- src/tests/usr.bin/xlint/lint1/queries.c:1.32 Fri Nov 29 20:02:36 2024 +++ src/tests/usr.bin/xlint/lint1/queries.c Sat Nov 30 11:27:20 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: queries.c,v 1.32 2024/11/29 20:02:36 rillig Exp $ */ +/* $NetBSD: queries.c,v 1.33 2024/11/30 11:27:20 rillig Exp $ */ # 3 "queries.c" /* @@ -332,6 +332,8 @@ Q8(void) u16 = 0; /* expect+1: octal number '000000' [Q8] */ u16 = 000000; + /* expect+1: octal number '0123' [Q8] */ + u16 = 0123ULL; u16 = 1; u16 = 10; /* expect+1: octal number '0644' [Q8] */ @@ -373,9 +375,9 @@ Q9(int x) return (0.0); case 9: return -# 377 "queries.c" 3 4 +# 379 "queries.c" 3 4 ((void *)0) -# 379 "queries.c" +# 381 "queries.c" /* expect+1: warning: illegal combination of integer 'int' and pointer 'pointer to void' [183] */ ; case 10: Index: src/tests/usr.bin/xlint/lint1/msg_004.c diff -u src/tests/usr.bin/xlint/lint1/msg_004.c:1.8 src/tests/usr.bin/xlint/lint1/msg_004.c:1.9 --- src/tests/usr.bin/xlint/lint1/msg_004.c:1.8 Sat May 4 06:52:17 2024 +++ src/tests/usr.bin/xlint/lint1/msg_004.c Sat Nov 30 11:27:20 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_004.c,v 1.8 2024/05/04 06:52:17 rillig Exp $ */ +/* $NetBSD: msg_004.c,v 1.9 2024/11/30 11:27:20 rillig Exp $ */ # 3 "msg_004.c" // Test for message: illegal type combination [4] @@ -28,3 +28,25 @@ long struct { int member; }; /* expect-1: error: illegal type combination [4] */ + +struct str { +}; +/* expect+1: error: illegal type combination [4] */ +struct str int struct_str_int; + +/* expect+1: error: illegal type combination [4] */ +unsigned signed int unsigned_signed_int; + +/* expect+1: error: illegal type combination [4] */ +unsigned unsigned int unsigned_unsigned_int; + +/* expect+1: error: illegal type combination [4] */ +long long long int long_long_long_int; + +/* expect+1: error: illegal type combination [4] */ +short double short_double; + +double short double_short; + +/* expect+1: error: illegal type combination [4] */ +char double short char_double_short; Index: src/tests/usr.bin/xlint/lint1/msg_068.c diff -u src/tests/usr.bin/xlint/lint1/msg_068.c:1.5 src/tests/usr.bin/xlint/lint1/msg_068.c:1.6 --- src/tests/usr.bin/xlint/lint1/msg_068.c:1.5 Tue Mar 28 14:44:34 2023 +++ src/tests/usr.bin/xlint/lint1/msg_068.c Sat Nov 30 11:27:20 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_068.c,v 1.5 2023/03/28 14:44:34 rillig Exp $ */ +/* $NetBSD: msg_068.c,v 1.6 2024/11/30 11:27:20 rillig Exp $ */ # 3 "msg_068.c" // Test for message: typedef already qualified with '%s' [68] @@ -9,3 +9,14 @@ typedef const char const_char; /* expect+1: warning: typedef already qualified with 'const' [68] */ const const_char twice_const; + +typedef volatile char volatile_char; + +/* expect+1: warning: typedef already qualified with 'volatile' [68] */ +volatile volatile_char twice_volatile; + +typedef const volatile char const_volatile_char; + +/* expect+2: warning: typedef already qualified with 'const' [68] */ +/* expect+1: warning: typedef already qualified with 'volatile' [68] */ +const volatile const_volatile_char twice_const_volatile; Index: src/tests/usr.bin/xlint/lint1/msg_217.c diff -u src/tests/usr.bin/xlint/lint1/msg_217.c:1.15 src/tests/usr.bin/xlint/lint1/msg_217.c:1.16 --- src/tests/usr.bin/xlint/lint1/msg_217.c:1.15 Wed Nov 13 04:32:49 2024 +++ src/tests/usr.bin/xlint/lint1/msg_217.c Sat Nov 30 11:27:20 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_217.c,v 1.15 2024/11/13 04:32:49 rillig Exp $ */ +/* $NetBSD: msg_217.c,v 1.16 2024/11/30 11:27:20 rillig Exp $ */ # 3 "msg_217.c" // Test for message: function '%s' falls off bottom without returning value [217] @@ -85,7 +85,7 @@ call_noreturn_c11(void) noreturn_c11(); } -int +inline int call_noreturn_c23(void) { noreturn_c23(); @@ -108,3 +108,13 @@ call_noreturn_gnu_suffix(void) { noreturn_gnu_suffix(); } + + +double *force_function_attributes_in_diagnostic[] = { + // Force the word 'noreturn' to occur in a diagnostic. + /* expect+1: warning: illegal combination of 'pointer to double' and 'pointer to noreturn function(void) returning void', op 'init' [124] */ + noreturn_c23, + // The 'inline' does affect the type of the function. + /* expect+1: warning: illegal combination of 'pointer to double' and 'pointer to function(void) returning int', op 'init' [124] */ + call_noreturn_c23, +};