Skip to content

Commit 1a7d0ea

Browse files
committed
kconfig: improve error message for dependency between choice members
A choice member must not depend on another member within the same choice block. Kconfig detects this, but the error message is not sensible. [Test Code] choice prompt "choose" config A bool "A" depends on B config B bool "B" endchoice [Result] Kconfig:1:error: recursive dependency detected! Kconfig:1: choice <choice> contains symbol A Kconfig:4: symbol A is part of choice B Kconfig:8: symbol B is part of choice <choice> For a resolution refer to Documentation/kbuild/kconfig-language.rst subsection "Kconfig recursive dependency limitations" The phrase "part of choice B" is weird because B is not a choice block, but a choice member. To determine whether the current symbol is a part of a choice block, sym_is_choice(next_sym) must be checked. This commit improves the error message to: Kconfig:1:error: recursive dependency detected! Kconfig:1: choice <choice> contains symbol A Kconfig:4: symbol A symbol is visible depending on B Kconfig:8: symbol B is part of choice <choice> For a resolution refer to Documentation/kbuild/kconfig-language.rst subsection "Kconfig recursive dependency limitations" Signed-off-by: Masahiro Yamada <[email protected]>
1 parent d533828 commit 1a7d0ea

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

scripts/kconfig/symbol.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1111,7 +1111,7 @@ static void sym_check_print_recursive(struct symbol *last_sym)
11111111
menu->filename, menu->lineno,
11121112
sym->name ? sym->name : "<choice>",
11131113
next_sym->name ? next_sym->name : "<choice>");
1114-
} else if (sym_is_choice_value(sym)) {
1114+
} else if (sym_is_choice(next_sym)) {
11151115
fprintf(stderr, "%s:%d:\tsymbol %s is part of choice %s\n",
11161116
menu->filename, menu->lineno,
11171117
sym->name ? sym->name : "<choice>",

0 commit comments

Comments
 (0)