copy line and pragma directive parsers from lexer
[cparser] / walk.c
diff --git a/walk.c b/walk.c
index 00cab1f..46ff307 100644 (file)
--- a/walk.c
+++ b/walk.c
@@ -177,10 +177,10 @@ static void walk_expression(expression_t *const expr,
                return;
 
        case EXPR_LITERAL_CASES:
+       case EXPR_LITERAL_CHARACTER:
        case EXPR_REFERENCE:
-       case EXPR_REFERENCE_ENUM_VALUE:
+       case EXPR_ENUM_CONSTANT:
        case EXPR_STRING_LITERAL:
-       case EXPR_WIDE_STRING_LITERAL:
        case EXPR_FUNCNAME:
        case EXPR_LABEL_ADDRESS:
        case EXPR_ERROR:
@@ -214,8 +214,8 @@ static void walk_initializer(const initializer_t  *initializer,
        case INITIALIZER_DESIGNATOR:
                walk_designator(initializer->designator.designator, env);
                return;
+
        case INITIALIZER_STRING:
-       case INITIALIZER_WIDE_STRING:
                return;
        }
 }
@@ -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,9 +364,8 @@ 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_GOTO:
-               if (stmt->gotos.expression)
-                       walk_expression(stmt->gotos.expression, env);
+       case STATEMENT_COMPUTED_GOTO:
+               walk_expression(stmt->computed_goto.expression, env);
                return;
 
        case STATEMENT_ERROR:
@@ -369,6 +373,7 @@ static void walk_statement(statement_t *const stmt, const walk_env_t *const env)
        case STATEMENT_CONTINUE:
        case STATEMENT_BREAK:
        case STATEMENT_ASM:
+       case STATEMENT_GOTO:
        case STATEMENT_LEAVE:
                return;
        }