kconfig: explicitly introduce expression list
[linux-2.6.git] / scripts / kconfig / symbol.c
index add068c..a7dfc82 100644 (file)
@@ -247,8 +247,7 @@ static struct symbol *sym_calc_choice(struct symbol *sym)
 
        /* just get the first visible value */
        prop = sym_get_choice_prop(sym);
-       for (e = prop->expr; e; e = e->left.expr) {
-               def_sym = e->right.sym;
+       expr_list_for_each_sym(prop->expr, e, def_sym) {
                sym_calc_visibility(def_sym);
                if (def_sym->visible != no)
                        return def_sym;
@@ -361,12 +360,14 @@ void sym_calc_value(struct symbol *sym)
        }
 
        if (sym_is_choice(sym)) {
+               struct symbol *choice_sym;
                int flags = sym->flags & (SYMBOL_CHANGED | SYMBOL_WRITE);
+
                prop = sym_get_choice_prop(sym);
-               for (e = prop->expr; e; e = e->left.expr) {
-                       e->right.sym->flags |= flags;
+               expr_list_for_each_sym(prop->expr, e, choice_sym) {
+                       choice_sym->flags |= flags;
                        if (flags & SYMBOL_CHANGED)
-                               sym_set_changed(e->right.sym);
+                               sym_set_changed(choice_sym);
                }
        }
 }
@@ -849,7 +850,7 @@ struct property *prop_alloc(enum prop_type type, struct symbol *sym)
 struct symbol *prop_get_symbol(struct property *prop)
 {
        if (prop->expr && (prop->expr->type == E_SYMBOL ||
-                          prop->expr->type == E_CHOICE))
+                          prop->expr->type == E_LIST))
                return prop->expr->left.sym;
        return NULL;
 }