Home | History | Annotate | Line # | Download | only in lint1
d_c99_union_cast.c revision 1.8
      1  1.8    rillig /*	$NetBSD: d_c99_union_cast.c,v 1.8 2023/07/07 19:45:22 rillig Exp $	*/
      2  1.2    rillig # 3 "d_c99_union_cast.c"
      3  1.2    rillig 
      4  1.5    rillig /* C99 does not define union cast, it is a GCC extension. */
      5  1.1  christos 
      6  1.8    rillig /* lint1-flags: -Sw -X 351 */
      7  1.6    rillig 
      8  1.1  christos struct bar {
      9  1.1  christos 	int a;
     10  1.1  christos 	int b;
     11  1.1  christos };
     12  1.1  christos 
     13  1.1  christos union foo {
     14  1.1  christos 	struct bar *a;
     15  1.1  christos 	int b;
     16  1.1  christos };
     17  1.1  christos 
     18  1.1  christos void
     19  1.6    rillig foo(struct bar *a)
     20  1.3    rillig {
     21  1.7    rillig 	/* expect+1: error: union cast is a GCC extension [328] */
     22  1.6    rillig 	a = ((union foo)a).a;
     23  1.7    rillig 	/* expect+1: error: union cast is a GCC extension [328] */
     24  1.6    rillig 	a = ((union foo)"string");
     25  1.6    rillig 	a->a++;
     26  1.1  christos }
     27