summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorMasahiro Yamada <masahiroy@kernel.org>2024-06-27 03:22:02 +0900
committerMasahiro Yamada <masahiroy@kernel.org>2024-07-16 01:08:38 +0900
commit1a7d0ea83e620fd8d7b3ced00a1c31f64cb70730 (patch)
treea089b9d75cb89cd529c4cbe8b6ecac0753a4fe7d /scripts
parentd533828ef3cafc2178dda44851d7cd8875781d55 (diff)
downloadlinux-stable-1a7d0ea83e620fd8d7b3ced00a1c31f64cb70730.tar.gz
linux-stable-1a7d0ea83e620fd8d7b3ced00a1c31f64cb70730.tar.bz2
linux-stable-1a7d0ea83e620fd8d7b3ced00a1c31f64cb70730.zip
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 <masahiroy@kernel.org>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/kconfig/symbol.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/scripts/kconfig/symbol.c b/scripts/kconfig/symbol.c
index 1cb8b6a22c5a..0c4b2894ac4e 100644
--- a/scripts/kconfig/symbol.c
+++ b/scripts/kconfig/symbol.c
@@ -1111,7 +1111,7 @@ static void sym_check_print_recursive(struct symbol *last_sym)
menu->filename, menu->lineno,
sym->name ? sym->name : "<choice>",
next_sym->name ? next_sym->name : "<choice>");
- } else if (sym_is_choice_value(sym)) {
+ } else if (sym_is_choice(next_sym)) {
fprintf(stderr, "%s:%d:\tsymbol %s is part of choice %s\n",
menu->filename, menu->lineno,
sym->name ? sym->name : "<choice>",