walk_entity((entity_t*)type->enumt.enume, env);
return;
}
- panic("invalid type found");
+ panic("invalid type");
}
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:
case INITIALIZER_DESIGNATOR:
walk_designator(initializer->designator.designator, env);
return;
+
case INITIALIZER_STRING:
- case INITIALIZER_WIDE_STRING:
return;
}
}
return;
case ENTITY_FUNCTION:
walk_type(entity->declaration.type, env);
- if (entity->function.statement != NULL)
- walk_statement(entity->function.statement, env);
+ if (entity->function.body != NULL)
+ walk_statement(entity->function.body, env);
return;
case ENTITY_COMPOUND_MEMBER:
case ENTITY_PARAMETER:
case ENTITY_LOCAL_LABEL:
return;
}
- panic("invalid entity found");
+ panic("invalid entity");
}
static void walk_declarations(entity_t* entity,
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;
- case STATEMENT_WHILE:
- walk_expression(stmt->whiles.condition, env);
- walk_statement(stmt->whiles.body, env);
- return;
-
case STATEMENT_DO_WHILE:
walk_statement(stmt->do_while.body, env);
walk_expression(stmt->do_while.condition, env);