Module Name: src
Committed By: rillig
Date: Sat Apr 15 10:53:59 UTC 2023
Modified Files:
src/tests/usr.bin/xlint/lint1: msg_302.c
Log Message:
tests/lint: extend test for returning local address
To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/tests/usr.bin/xlint/lint1/msg_302.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/msg_302.c
diff -u src/tests/usr.bin/xlint/lint1/msg_302.c:1.4 src/tests/usr.bin/xlint/lint1/msg_302.c:1.5
--- src/tests/usr.bin/xlint/lint1/msg_302.c:1.4 Wed Jun 22 19:23:18 2022
+++ src/tests/usr.bin/xlint/lint1/msg_302.c Sat Apr 15 10:53:59 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: msg_302.c,v 1.4 2022/06/22 19:23:18 rillig Exp $ */
+/* $NetBSD: msg_302.c,v 1.5 2023/04/15 10:53:59 rillig Exp $ */
# 3 "msg_302.c"
// Test for message: '%s' returns pointer to automatic object [302]
@@ -19,17 +19,32 @@ return_local(void)
}
void *
-return_local_array(_Bool cond)
+return_local_array(int x)
{
- int local[5];
- int *p = local;
+ int local[5], *indirect = local;
- /* XXX: lint doesn't track this indirection, but Clang-tidy does. */
- if (cond)
- return p;
-
- /* expect+1: warning: 'return_local_array' returns pointer to automatic object [302] */
- return local + 5;
+ switch (x) {
+ case 0:
+ /* expect+1: warning: 'return_local_array' returns pointer to automatic object [302] */
+ return local;
+ case 1:
+ /* expect+1: warning: 'return_local_array' returns pointer to automatic object [302] */
+ return &local[3];
+ case 2:
+ /* expect+1: warning: 'return_local_array' returns pointer to automatic object [302] */
+ return 5 + local;
+ case 3:
+ /* expect+1: warning: 'return_local_array' returns pointer to automatic object [302] */
+ return local + 5;
+ case 4:
+ /* XXX: lint only checks '+' but not '-'. */
+ return local - -3;
+ case 5:
+ /* XXX: lint doesn't track this indirection, but Clang-tidy does. */
+ return indirect;
+ default:
+ return "OK";
+ }
}
void *