Home | History | Annotate | Line # | Download | only in lint1
      1  1.16  rillig /*	$NetBSD: msg_249.c,v 1.16 2024/11/13 04:32:49 rillig Exp $	*/
      2   1.1  rillig # 3 "msg_249.c"
      3   1.1  rillig 
      4   1.1  rillig // Test for message: syntax error '%s' [249]
      5   1.1  rillig 
      6  1.14  rillig /* lint1-extra-flags: -X 351 */
      7  1.14  rillig 
      8   1.3  rillig /*
      9   1.4  rillig  * Cover the grammar rule 'top_level_declaration: error T_SEMI'.
     10   1.4  rillig  */
     11  1.12  rillig /* expect+1: error: syntax error '"' [249] */
     12   1.4  rillig "syntax error in top_level_declaration";
     13   1.4  rillig 
     14   1.4  rillig /* XXX: This is necessary to recover the yacc parser. */
     15   1.4  rillig int recover_from_semi;
     16   1.4  rillig 
     17   1.4  rillig /*
     18   1.4  rillig  * Cover the grammar rule 'top_level_declaration: error T_RBRACE'.
     19   1.4  rillig  */
     20  1.12  rillig /* expect+1: error: syntax error '"' [249] */
     21   1.4  rillig "syntax error in top_level_declaration"}
     22   1.4  rillig 
     23   1.4  rillig /* XXX: This is necessary to recover the yacc parser. */
     24   1.4  rillig int recover_from_rbrace;
     25   1.4  rillig 
     26   1.4  rillig /*
     27   1.3  rillig  * Before func.c 1.110 from 2021-06-19, lint ran into this:
     28   1.3  rillig  * assertion "cstmt->c_kind == kind" failed in end_control_statement
     29   1.3  rillig  */
     30   1.3  rillig void
     31   1.3  rillig function(void)
     32   1.3  rillig {
     33   1.3  rillig 	if (0)
     34  1.16  rillig 		/* expect+1: warning: 'empty' statement not reached [193] */
     35   1.3  rillig 		;
     36  1.11  rillig 	/* expect+1: error: syntax error ')' [249] */
     37  1.11  rillig 	);
     38   1.3  rillig }
     39   1.4  rillig 
     40   1.5  rillig /* XXX: It is unexpected that this error is not detected. */
     41   1.5  rillig "This syntax error is not detected.";
     42   1.5  rillig 
     43   1.4  rillig /* XXX: This is necessary to recover the yacc parser. */
     44   1.5  rillig double recover_from_rparen;
     45   1.5  rillig 
     46   1.5  rillig /* Ensure that the declaration after the syntax error is processed. */
     47   1.5  rillig double *
     48   1.5  rillig access_declaration_after_syntax_error(void)
     49   1.5  rillig {
     50   1.5  rillig 	return &recover_from_rparen;
     51   1.5  rillig }
     52   1.6  rillig 
     53   1.6  rillig struct cover_member_declaration {
     54   1.6  rillig 	/* cover 'noclass_declmods ... notype_member_decls' */
     55   1.6  rillig 	const noclass_declmods;
     56   1.6  rillig 
     57   1.6  rillig 	/* cover 'noclass_declspecs ...' */
     58   1.6  rillig 	const int noclass_declspecs;
     59   1.6  rillig 
     60   1.8  rillig 	/* cover 'add_type_qualifier_list end_type' */
     61   1.7  rillig 	/* expect+1: error: syntax error 'member without type' [249] */
     62   1.6  rillig 	const;
     63   1.6  rillig };
     64  1.10  rillig 
     65  1.10  rillig /*
     66  1.10  rillig  * At this point, lint assumes that the following code is still in the
     67  1.10  rillig  * function 'access_declaration_after_syntax_error'.
     68  1.10  rillig  */
     69  1.10  rillig 
     70  1.10  rillig int gcc_statement_expression_1 = ({
     71  1.10  rillig unused_label:
     72  1.10  rillig 	1;
     73  1.10  rillig 	1;
     74  1.15  rillig 	/* expect+2: error: syntax error 'labels are only valid inside a function' [249] */
     75  1.15  rillig 	/* expect+1: error: non-constant initializer [177] */
     76  1.10  rillig });
     77  1.10  rillig 
     78  1.10  rillig /* Even another function definition does not help. */
     79  1.10  rillig void
     80  1.10  rillig try_to_recover(void)
     81  1.10  rillig {
     82  1.10  rillig }
     83  1.10  rillig 
     84  1.10  rillig int gcc_statement_expression_2 = ({
     85  1.10  rillig unused_label:
     86  1.10  rillig 	1;
     87  1.10  rillig 	1;
     88  1.15  rillig 	/* expect+2: error: syntax error 'labels are only valid inside a function' [249] */
     89  1.15  rillig 	/* expect+1: error: non-constant initializer [177] */
     90  1.10  rillig });
     91