NetBSD/tests/usr.bin/xlint/lint1/msg_249.c

91 lines
2.2 KiB
C

/* $NetBSD: msg_249.c,v 1.15 2024/01/28 08:17:27 rillig Exp $ */
# 3 "msg_249.c"
// Test for message: syntax error '%s' [249]
/* lint1-extra-flags: -X 351 */
/*
* Cover the grammar rule 'top_level_declaration: error T_SEMI'.
*/
/* expect+1: error: syntax error '"' [249] */
"syntax error in top_level_declaration";
/* XXX: This is necessary to recover the yacc parser. */
int recover_from_semi;
/*
* Cover the grammar rule 'top_level_declaration: error T_RBRACE'.
*/
/* expect+1: error: syntax error '"' [249] */
"syntax error in top_level_declaration"}
/* XXX: This is necessary to recover the yacc parser. */
int recover_from_rbrace;
/*
* Before func.c 1.110 from 2021-06-19, lint ran into this:
* assertion "cstmt->c_kind == kind" failed in end_control_statement
*/
void
function(void)
{
if (0)
/* expect+1: warning: statement not reached [193] */
;
/* expect+1: error: syntax error ')' [249] */
);
}
/* XXX: It is unexpected that this error is not detected. */
"This syntax error is not detected.";
/* XXX: This is necessary to recover the yacc parser. */
double recover_from_rparen;
/* Ensure that the declaration after the syntax error is processed. */
double *
access_declaration_after_syntax_error(void)
{
return &recover_from_rparen;
}
struct cover_member_declaration {
/* cover 'noclass_declmods ... notype_member_decls' */
const noclass_declmods;
/* cover 'noclass_declspecs ...' */
const int noclass_declspecs;
/* cover 'add_type_qualifier_list end_type' */
/* expect+1: error: syntax error 'member without type' [249] */
const;
};
/*
* At this point, lint assumes that the following code is still in the
* function 'access_declaration_after_syntax_error'.
*/
int gcc_statement_expression_1 = ({
unused_label:
1;
1;
/* expect+2: error: syntax error 'labels are only valid inside a function' [249] */
/* expect+1: error: non-constant initializer [177] */
});
/* Even another function definition does not help. */
void
try_to_recover(void)
{
}
int gcc_statement_expression_2 = ({
unused_label:
1;
1;
/* expect+2: error: syntax error 'labels are only valid inside a function' [249] */
/* expect+1: error: non-constant initializer [177] */
});