kconfig: improve error message for recursive dependency in choice
authorMasahiro Yamada <masahiroy@kernel.org>
Wed, 26 Jun 2024 18:22:03 +0000 (03:22 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Mon, 15 Jul 2024 16:08:38 +0000 (01:08 +0900)
commitd67624d814ae40a655981992b0f0d652e6f591b8
tree533ec7342543ae4268dc504c08c250e366541e9c
parent1a7d0ea83e620fd8d7b3ced00a1c31f64cb70730
kconfig: improve error message for recursive dependency in choice

Kconfig detects recursive dependencies in a choice block, but the error
message is unclear.

[Test Code]

    choice
            prompt "choose"
            depends on A

    config A
            bool "A"

    config B
            bool "B"

    endchoice

[Result]

    Kconfig:1:error: recursive dependency detected!
    Kconfig:1:      choice <choice> contains symbol A
    Kconfig:5:      symbol A is part of choice <choice>
    For a resolution refer to Documentation/kbuild/kconfig-language.rst
    subsection "Kconfig recursive dependency limitations"

The phrase "contains symbol A" does not accurately describe the problem.
The issue is that the choice depends on A, which is a member of itself.

The first if-block does not print a sensible message. Remove it.

This commit improves the error message to:

    Kconfig:1:error: recursive dependency detected!
    Kconfig:1:      symbol <choice> symbol is visible depending on A
    Kconfig:5:      symbol A 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>
scripts/kconfig/symbol.c