Do not link on every make invocation
[cparser] / walk.c
diff --git a/walk.c b/walk.c
index e213f2b..7183d38 100644 (file)
--- a/walk.c
+++ b/walk.c
@@ -82,8 +82,6 @@ static void walk_type(type_t *const type, const walk_env_t *const env)
        case TYPE_ENUM:
                walk_entity((entity_t*)type->enumt.enume, env);
                return;
-       case TYPE_INVALID:
-               break;
        }
        panic("invalid type found");
 }
@@ -185,9 +183,8 @@ static void walk_expression(expression_t *const expr,
        case EXPR_WIDE_STRING_LITERAL:
        case EXPR_FUNCNAME:
        case EXPR_LABEL_ADDRESS:
+       case EXPR_ERROR:
                return;
-       case EXPR_INVALID:
-               break;
        }
        panic("invalid expr kind");
 }
@@ -196,7 +193,8 @@ static void walk_designator(const designator_t *designator,
                             const walk_env_t *const env)
 {
        for ( ; designator != NULL; designator = designator->next) {
-               walk_expression(designator->array_index, env);
+               if (designator->array_index != NULL)
+                       walk_expression(designator->array_index, env);
        }
 }
 
@@ -237,7 +235,8 @@ static void walk_entity(entity_t *entity, const walk_env_t *const env)
                return;
        }
        case ENTITY_ENUM_VALUE:
-               walk_expression(entity->enum_value.value, env);
+               if (entity->enum_value.value != NULL)
+                       walk_expression(entity->enum_value.value, env);
                return;
        case ENTITY_TYPEDEF:
                walk_type(entity->typedefe.type, env);
@@ -269,8 +268,6 @@ static void walk_entity(entity_t *entity, const walk_env_t *const env)
        case ENTITY_LABEL:
        case ENTITY_LOCAL_LABEL:
                return;
-       case ENTITY_INVALID:
-               break;
        }
        panic("invalid entity found");
 }
@@ -362,7 +359,7 @@ 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_INVALID:
+       case STATEMENT_ERROR:
        case STATEMENT_EMPTY:
        case STATEMENT_CONTINUE:
        case STATEMENT_BREAK: