Module Name: src Committed By: rillig Date: Tue Aug 3 20:46:10 UTC 2021
Modified Files: src/tests/usr.bin/xlint/lint1: d_c99_union_cast.c d_c99_union_cast.exp Log Message: tests/lint: prepare non-GCC test for union casts To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/tests/usr.bin/xlint/lint1/d_c99_union_cast.c cvs rdiff -u -r1.4 -r1.5 src/tests/usr.bin/xlint/lint1/d_c99_union_cast.exp 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/d_c99_union_cast.c diff -u src/tests/usr.bin/xlint/lint1/d_c99_union_cast.c:1.5 src/tests/usr.bin/xlint/lint1/d_c99_union_cast.c:1.6 --- src/tests/usr.bin/xlint/lint1/d_c99_union_cast.c:1.5 Tue Aug 3 20:34:23 2021 +++ src/tests/usr.bin/xlint/lint1/d_c99_union_cast.c Tue Aug 3 20:46:10 2021 @@ -1,8 +1,10 @@ -/* $NetBSD: d_c99_union_cast.c,v 1.5 2021/08/03 20:34:23 rillig Exp $ */ +/* $NetBSD: d_c99_union_cast.c,v 1.6 2021/08/03 20:46:10 rillig Exp $ */ # 3 "d_c99_union_cast.c" /* C99 does not define union cast, it is a GCC extension. */ +/* lint1-flags: -Sw */ + struct bar { int a; int b; @@ -14,9 +16,11 @@ union foo { }; void -foo(void) +foo(struct bar *a) { - struct bar *a; /* expect: 192 */ - - ((union foo)a).a; + /* TODO: warn about union casts in general */ + a = ((union foo)a).a; + /* expect+1: error: type 'pointer to char' is not a member of 'union foo' [329] */ + a = ((union foo)"string"); + a->a++; } Index: src/tests/usr.bin/xlint/lint1/d_c99_union_cast.exp diff -u src/tests/usr.bin/xlint/lint1/d_c99_union_cast.exp:1.4 src/tests/usr.bin/xlint/lint1/d_c99_union_cast.exp:1.5 --- src/tests/usr.bin/xlint/lint1/d_c99_union_cast.exp:1.4 Fri Apr 9 20:12:00 2021 +++ src/tests/usr.bin/xlint/lint1/d_c99_union_cast.exp Tue Aug 3 20:46:10 2021 @@ -1 +1 @@ -d_c99_union_cast.c(19): warning: 'a' unused in function 'foo' [192] +d_c99_union_cast.c(24): error: type 'pointer to char' is not a member of 'union foo' [329]