Home | History | Annotate | Line # | Download | only in lint1
d_gcc_compound_statements1.c revision 1.9
      1  1.9  rillig /*	$NetBSD: d_gcc_compound_statements1.c,v 1.9 2022/04/24 20:08:23 rillig Exp $	*/
      2  1.2  rillig # 3 "d_gcc_compound_statements1.c"
      3  1.2  rillig 
      4  1.4  rillig /* GCC compound statement with expression */
      5  1.1  jruoho 
      6  1.9  rillig void foo(unsigned long z)
      7  1.1  jruoho {
      8  1.3  rillig 	z = ({
      9  1.3  rillig 		unsigned long tmp;
     10  1.3  rillig 		tmp = 1;
     11  1.3  rillig 		tmp;
     12  1.3  rillig 	});
     13  1.1  jruoho 	foo(z);
     14  1.1  jruoho }
     15  1.5  rillig 
     16  1.5  rillig /*
     17  1.5  rillig  * Compound statements are only allowed in functions, not at file scope.
     18  1.5  rillig  *
     19  1.5  rillig  * Before decl.c 1.186 from 2021-06-19, lint crashed with a segmentation
     20  1.5  rillig  * fault.
     21  1.5  rillig  */
     22  1.5  rillig int c = ({
     23  1.7  rillig 	/* expect+1: error: syntax error 'return outside function' [249] */
     24  1.7  rillig 	return 3;
     25  1.7  rillig });
     26  1.7  rillig /* expect-1: error: cannot initialize 'int' from 'void' [185] */
     27  1.6  rillig 
     28  1.6  rillig void
     29  1.6  rillig function(void)
     30  1.6  rillig {
     31  1.6  rillig 	/*
     32  1.6  rillig 	 * Before cgram.y 1.229 from 2021-06-20, lint crashed due to the
     33  1.6  rillig 	 * syntax error, which made an expression NULL.
     34  1.6  rillig 	 */
     35  1.6  rillig 	({
     36  1.7  rillig 		/* expect+1: error: type 'int' does not have member 'e' [101] */
     37  1.7  rillig 		0->e;
     38  1.6  rillig 	});
     39  1.6  rillig }
     40  1.8  rillig 
     41  1.8  rillig void
     42  1.8  rillig crash(void)
     43  1.8  rillig {
     44  1.8  rillig 	/*
     45  1.8  rillig 	 * Before tree.c 1.418 from 2022-04-03, lint dereferenced a null
     46  1.8  rillig 	 * pointer in do_statement_expr.
     47  1.8  rillig 	 */
     48  1.8  rillig 	({
     49  1.8  rillig 		/* expect+1: error: syntax error ';' [249] */
     50  1.8  rillig 		;
     51  1.8  rillig 	});
     52  1.8  rillig }
     53