Module Name: src
Committed By: rillig
Date: Sun Jan 15 13:30:04 UTC 2023
Modified Files:
src/tests/usr.bin/xlint/lint1: expr_sizeof.c
Log Message:
tests/lint: add more tests for sizeof
To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/tests/usr.bin/xlint/lint1/expr_sizeof.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/expr_sizeof.c
diff -u src/tests/usr.bin/xlint/lint1/expr_sizeof.c:1.1 src/tests/usr.bin/xlint/lint1/expr_sizeof.c:1.2
--- src/tests/usr.bin/xlint/lint1/expr_sizeof.c:1.1 Sun Jan 15 00:53:19 2023
+++ src/tests/usr.bin/xlint/lint1/expr_sizeof.c Sun Jan 15 13:30:04 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: expr_sizeof.c,v 1.1 2023/01/15 00:53:19 rillig Exp $ */
+/* $NetBSD: expr_sizeof.c,v 1.2 2023/01/15 13:30:04 rillig Exp $ */
# 3 "expr_sizeof.c"
/*
@@ -42,10 +42,27 @@ typedef int sizeof_paren_global_var[-(in
/*
* Even though 'sizeof(s)' may look like a function call expression, the
* parentheses around 's' are ordinary parentheses and do not influence the
- * associativity. Therefore, the '.' following the '(s)' takes precedence
- * over the 'sizeof'. Same for the '->' following the '(ps)'.
+ * precedence.
+ *
+ * Therefore, the '.' following the '(s)' takes precedence over the 'sizeof'.
+ * Same for the '->' following the '(ps)'. Same for the '[0]' following the
+ * '(arr)'.
*/
/* expect+1: error: negative array dimension (-4) [20] */
typedef int sizeof_paren_global_struct_member[-(int)sizeof(s).member];
/* expect+1: error: negative array dimension (-4) [20] */
typedef int sizeof_paren_global_ptr_struct_member[-(int)sizeof(ps)->member];
+int arr[] = { 1, 2, 3 };
+/* expect+1: error: negative array dimension (-3) [20] */
+typedef int arr_count[-(int)sizeof(arr) / (int)sizeof(arr)[0]];
+
+/* FIXME: 'n' is actually used, for the variable length array. */
+/* expect+2: warning: argument 'n' unused in function 'variable_length_array' [231] */
+void
+variable_length_array(int n)
+{
+ int local_arr[n + 5];
+ /* FIXME: sizeof(local_arr) must be 20, not 4. */
+ /* expect+1: error: negative array dimension (-4) [20] */
+ typedef int sizeof_local_arr[-(int)sizeof(local_arr)];
+}