1 1.11 rillig /* $NetBSD: msg_249.c,v 1.11 2022/06/16 21:24:41 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.11 rillig /* expect+1: error: syntax error ')' [249] */ 35 1.11 rillig ); 36 1.3 rillig } 37 1.4 rillig 38 1.5 rillig /* XXX: It is unexpected that this error is not detected. */ 39 1.5 rillig "This syntax error is not detected."; 40 1.5 rillig 41 1.4 rillig /* XXX: This is necessary to recover the yacc parser. */ 42 1.5 rillig double recover_from_rparen; 43 1.5 rillig 44 1.5 rillig /* Ensure that the declaration after the syntax error is processed. */ 45 1.5 rillig double * 46 1.5 rillig access_declaration_after_syntax_error(void) 47 1.5 rillig { 48 1.5 rillig return &recover_from_rparen; 49 1.5 rillig } 50 1.6 rillig 51 1.6 rillig struct cover_member_declaration { 52 1.6 rillig /* cover 'noclass_declmods ... notype_member_decls' */ 53 1.6 rillig const noclass_declmods; 54 1.6 rillig 55 1.6 rillig /* cover 'noclass_declspecs ...' */ 56 1.6 rillig const int noclass_declspecs; 57 1.6 rillig 58 1.8 rillig /* cover 'add_type_qualifier_list end_type' */ 59 1.7 rillig /* expect+1: error: syntax error 'member without type' [249] */ 60 1.6 rillig const; 61 1.6 rillig }; 62 1.10 rillig 63 1.10 rillig /* 64 1.10 rillig * At this point, lint assumes that the following code is still in the 65 1.10 rillig * function 'access_declaration_after_syntax_error'. 66 1.10 rillig */ 67 1.10 rillig 68 1.10 rillig int gcc_statement_expression_1 = ({ 69 1.10 rillig /* expect+1: warning: label 'unused_label' unused in function 'access_declaration_after_syntax_error' [232] */ 70 1.10 rillig unused_label: 71 1.10 rillig 1; 72 1.10 rillig 1; 73 1.10 rillig }); 74 1.10 rillig /* expect-1: error: non-constant initializer [177] */ 75 1.10 rillig 76 1.10 rillig /* Even another function definition does not help. */ 77 1.10 rillig void 78 1.10 rillig try_to_recover(void) 79 1.10 rillig { 80 1.10 rillig } 81 1.10 rillig 82 1.10 rillig int gcc_statement_expression_2 = ({ 83 1.10 rillig /* expect+1: warning: label 'unused_label' unused in function 'try_to_recover' [232] */ 84 1.10 rillig unused_label: 85 1.10 rillig 1; 86 1.10 rillig 1; 87 1.10 rillig }); 88 1.10 rillig /* expect-1: error: non-constant initializer [177] */ 89