X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=walk.c;h=1b887909e7d836d4c86a31e8119066557fe518da;hb=9bf914ca0a1473ee629d30d8a6a65cfbd633712b;hp=7183d38bd6bc349a2e0b8dc94a05440ecf5e7d23;hpb=5767f9baa625accccefc9f403810cba51d6e943a;p=cparser diff --git a/walk.c b/walk.c index 7183d38..1b88790 100644 --- a/walk.c +++ b/walk.c @@ -96,16 +96,16 @@ static void walk_expression(expression_t *const expr, walk_statement(expr->statement.statement, env); return; - EXPR_BINARY_CASES + case EXPR_BINARY_CASES: walk_expression(expr->binary.left, env); walk_expression(expr->binary.right, env); return; - EXPR_UNARY_CASES_OPTIONAL + case EXPR_UNARY_CASES_OPTIONAL: if (expr->unary.value == NULL) return; /* FALLTHROUGH */ - EXPR_UNARY_CASES_MANDATORY + case EXPR_UNARY_CASES_MANDATORY: walk_expression(expr->unary.value, env); return; @@ -176,9 +176,9 @@ static void walk_expression(expression_t *const expr, walk_designator(expr->offsetofe.designator, env); return; - EXPR_LITERAL_CASES + case EXPR_LITERAL_CASES: case EXPR_REFERENCE: - case EXPR_REFERENCE_ENUM_VALUE: + case EXPR_ENUM_CONSTANT: case EXPR_STRING_LITERAL: case EXPR_WIDE_STRING_LITERAL: case EXPR_FUNCNAME: @@ -327,6 +327,11 @@ static void walk_statement(statement_t *const stmt, const walk_env_t *const env) return; case STATEMENT_CASE_LABEL: + if (stmt->case_label.expression) { + walk_expression(stmt->case_label.expression, env); + if (stmt->case_label.end_range) + walk_expression(stmt->case_label.end_range, env); + } walk_statement(stmt->case_label.statement, env); return; @@ -359,12 +364,16 @@ static void walk_statement(statement_t *const stmt, const walk_env_t *const env) walk_statement(stmt->ms_try.final_statement, env); return; + case STATEMENT_COMPUTED_GOTO: + walk_expression(stmt->computed_goto.expression, env); + return; + case STATEMENT_ERROR: case STATEMENT_EMPTY: case STATEMENT_CONTINUE: case STATEMENT_BREAK: - case STATEMENT_GOTO: case STATEMENT_ASM: + case STATEMENT_GOTO: case STATEMENT_LEAVE: return; }