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