Home | History | Annotate | Line # | Download | only in lint1
d_gcc_compound_statements1.c revision 1.11
      1  1.11  rillig /*	$NetBSD: d_gcc_compound_statements1.c,v 1.11 2022/06/15 18:11:02 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.10  rillig /*
      7  1.10  rillig  * Compound statements are only allowed in functions, not at file scope.
      8  1.10  rillig  *
      9  1.11  rillig  * Before decl.c 1.283 from 2022-05-31, lint crashed with a segmentation
     10  1.10  rillig  * fault due to the unused label.
     11  1.10  rillig  */
     12  1.10  rillig int invalid_gcc_statement_expression = ({
     13  1.10  rillig unused_label:
     14  1.10  rillig 	3;
     15  1.10  rillig /* expect+2: error: syntax error 'labels are only valid inside a function' [249] */
     16  1.10  rillig /* expect+1: error: cannot initialize 'int' from 'void' [185] */
     17  1.10  rillig });
     18  1.10  rillig 
     19   1.9  rillig void foo(unsigned long z)
     20   1.1  jruoho {
     21   1.3  rillig 	z = ({
     22   1.3  rillig 		unsigned long tmp;
     23   1.3  rillig 		tmp = 1;
     24   1.3  rillig 		tmp;
     25   1.3  rillig 	});
     26   1.1  jruoho 	foo(z);
     27   1.1  jruoho }
     28   1.5  rillig 
     29   1.5  rillig /*
     30   1.5  rillig  * Compound statements are only allowed in functions, not at file scope.
     31   1.5  rillig  *
     32   1.5  rillig  * Before decl.c 1.186 from 2021-06-19, lint crashed with a segmentation
     33   1.5  rillig  * fault.
     34   1.5  rillig  */
     35   1.5  rillig int c = ({
     36   1.7  rillig 	/* expect+1: error: syntax error 'return outside function' [249] */
     37   1.7  rillig 	return 3;
     38   1.7  rillig });
     39   1.7  rillig /* expect-1: error: cannot initialize 'int' from 'void' [185] */
     40   1.6  rillig 
     41   1.6  rillig void
     42   1.6  rillig function(void)
     43   1.6  rillig {
     44   1.6  rillig 	/*
     45   1.6  rillig 	 * Before cgram.y 1.229 from 2021-06-20, lint crashed due to the
     46   1.6  rillig 	 * syntax error, which made an expression NULL.
     47   1.6  rillig 	 */
     48   1.6  rillig 	({
     49   1.7  rillig 		/* expect+1: error: type 'int' does not have member 'e' [101] */
     50   1.7  rillig 		0->e;
     51   1.6  rillig 	});
     52   1.6  rillig }
     53   1.8  rillig 
     54   1.8  rillig void
     55   1.8  rillig crash(void)
     56   1.8  rillig {
     57   1.8  rillig 	/*
     58   1.8  rillig 	 * Before tree.c 1.418 from 2022-04-03, lint dereferenced a null
     59   1.8  rillig 	 * pointer in do_statement_expr.
     60   1.8  rillig 	 */
     61   1.8  rillig 	({
     62   1.8  rillig 		/* expect+1: error: syntax error ';' [249] */
     63   1.8  rillig 		;
     64   1.8  rillig 	});
     65   1.8  rillig }
     66