|
@@ -205,6 +205,16 @@ static void sym_calc_visibility(struct symbol *sym)
|
|
|
}
|
|
|
if (sym_is_choice_value(sym))
|
|
|
return;
|
|
|
+ /* defaulting to "yes" if no explicit "depends on" are given */
|
|
|
+ tri = yes;
|
|
|
+ if (sym->dir_dep.expr)
|
|
|
+ tri = expr_calc_value(sym->dir_dep.expr);
|
|
|
+ if (tri == mod)
|
|
|
+ tri = yes;
|
|
|
+ if (sym->dir_dep.tri != tri) {
|
|
|
+ sym->dir_dep.tri = tri;
|
|
|
+ sym_set_changed(sym);
|
|
|
+ }
|
|
|
tri = no;
|
|
|
if (sym->rev_dep.expr)
|
|
|
tri = expr_calc_value(sym->rev_dep.expr);
|
|
@@ -321,6 +331,14 @@ void sym_calc_value(struct symbol *sym)
|
|
|
}
|
|
|
}
|
|
|
calc_newval:
|
|
|
+ if (sym->dir_dep.tri == no && sym->rev_dep.tri != no) {
|
|
|
+ fprintf(stderr, "warning: (");
|
|
|
+ expr_fprint(sym->rev_dep.expr, stderr);
|
|
|
+ fprintf(stderr, ") selects %s which has unmet direct dependencies (",
|
|
|
+ sym->name);
|
|
|
+ expr_fprint(sym->dir_dep.expr, stderr);
|
|
|
+ fprintf(stderr, ")\n");
|
|
|
+ }
|
|
|
newval.tri = EXPR_OR(newval.tri, sym->rev_dep.tri);
|
|
|
}
|
|
|
if (newval.tri == mod && sym_get_type(sym) == S_BOOLEAN)
|