On Sun, May 5, 2024 at 3:34 AM Masahiro Yamada <masahiroy@xxxxxxxxxx> wrote: > > menu_finalize() warns default properties for choice members and prompts > outside the choice block. These should be hard errors. > > While I was here, I moved the checks to slim down menu_finalize(). > > Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx> > --- > > scripts/kconfig/menu.c | 10 ---------- > scripts/kconfig/parser.y | 39 +++++++++++++++++++++++++++++++++++++++ > 2 files changed, 39 insertions(+), 10 deletions(-) > > diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c > index a9b1e451dfe7..bee96c9964fd 100644 > --- a/scripts/kconfig/menu.c > +++ b/scripts/kconfig/menu.c > @@ -507,16 +507,6 @@ static void _menu_finalize(struct menu *parent, bool inside_choice) > menu->sym && !sym_is_choice_value(menu->sym)) { > current_entry = menu; > menu->sym->flags |= SYMBOL_CHOICEVAL; > - for (prop = menu->sym->prop; prop; prop = prop->next) { > - if (prop->type == P_DEFAULT) > - prop_warn(prop, "defaults for choice " > - "values not supported"); > - if (prop->menu == menu) > - continue; > - if (prop->type == P_PROMPT && > - prop->menu->parent->sym != sym) > - prop_warn(prop, "choice value used outside its choice group"); > - } > /* Non-tristate choice values of tristate choices must > * depend on the choice being set to Y. The choice > * values' dependencies were propagated to their > diff --git a/scripts/kconfig/parser.y b/scripts/kconfig/parser.y > index ed86869e5ed0..0a9e249b5dcc 100644 > --- a/scripts/kconfig/parser.y > +++ b/scripts/kconfig/parser.y > @@ -476,6 +476,37 @@ assign_val: > > %% > > +/** > + * choice_check_sanity - check sanity of a choice member > + * > + * @menu: menu of the choice member > + * > + * Return: -1 if an error is found, 0 otherwise. > + */ > +static int choice_check_sanity(struct menu *menu) > +{ > + struct property *prop; > + int ret = 0; > + > + for (prop = menu->sym->prop; prop; prop = prop->next) { > + if (prop->type == P_DEFAULT) { > + fprintf(stderr, "%s:%d: error: %s", > + prop->filename, prop->lineno, > + "defaults for choice values not supported\n"); > + ret = -1; > + } > + > + if (prop->menu != menu && prop->type == P_PROMPT) { > + fprintf(stderr, "%s:%d: error: %s", > + prop->filename, prop->lineno, > + "choice value has a prompt outside its choice group\n"); > + ret = -1; > + } > + } > + > + return ret; > +} > + I observed an error in powerpc. I will fix up this as follows: diff --git a/scripts/kconfig/parser.y b/scripts/kconfig/parser.y index 0a9e249b5dcc..ff709001b1f0 100644 --- a/scripts/kconfig/parser.y +++ b/scripts/kconfig/parser.y @@ -496,7 +496,8 @@ static int choice_check_sanity(struct menu *menu) ret = -1; } - if (prop->menu != menu && prop->type == P_PROMPT) { + if (prop->menu != menu && prop->type == P_PROMPT && + prop->menu->parent != menu->parent) { fprintf(stderr, "%s:%d: error: %s", prop->filename, prop->lineno, "choice value has a prompt outside its choice group\n"); -- Best Regards Masahiro Yamada