linux/scripts/kconfig
Masahiro Yamada 09d5873e4d kconfig: allow only 'config', 'comment', and 'if' inside 'choice'
The code block surrounded by 'if' ... 'endif' is reduced into if_stmt,
which is accepted in the 'choice' context. Therefore, you can write any
statements within a choice block by wrapping 'if y' ... 'end'.

For example, you can create a menu inside a choice, like follows:

---------------->8----------------
  choice
          prompt "choice"

  config A
          bool "A"

  config B
          bool "B"

  if y

  menu "strange menu"

  config C
          bool "C"

  endmenu

  endif

  endchoice
---------------->8----------------

I want to change such a weird structure into a syntax error.

In fact, the USB gadget Kconfig had used nested 'choice' for no good
reason until commit df8df5e4bc ("usb: get rid of 'choice' for
legacy gadget drivers") killed it.

I think the 'source' inside 'choice' is on the fence. It is at least
gramatically sensible as long as the included file contains only
bool/tristate configs. However, it makes the code unreadable, and people
tend to forget the fact that the file is included from the choice
block. Commit 10e5e6c249 ("usb: gadget: move choice ... endchoice to
legacy/Kconfig") got rid of the only usecase.

Going forward, you can only use 'config', 'comment', and 'if' inside
'choice'. This also recursively applies to 'if' blocks inside 'choice'.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
2020-05-12 13:28:30 +09:00
..
lxdialog kconfig: remove trailing whitespaces 2019-05-09 22:37:17 +09:00
tests kconfig: tests: remove randconfig test for choice in choice 2020-05-12 13:28:30 +09:00
.gitignore .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
conf.c kconfig: Add yes2modconfig and mod2yesconfig targets. 2020-01-07 02:18:45 +09:00
confdata.c kconfig: Invalidate all symbols after changing to y or m. 2020-02-05 13:45:37 +09:00
expr.c kconfig: distinguish between dependencies and visibility in help text 2020-01-07 02:18:45 +09:00
expr.h kconfig: distinguish between dependencies and visibility in help text 2020-01-07 02:18:45 +09:00
gconf-cfg.sh kconfig: do not require pkg-config on make {menu,n}config 2018-09-03 02:13:48 +09:00
gconf.c kconfig: fix an "implicit declaration of function" warning 2020-01-10 02:44:54 +09:00
gconf.glade scripts/kconfig/gconf.glade Update broken web addresses. 2010-09-17 16:54:42 +02:00
images.c kconfig: split images.c out of qconf.cc/gconf.c to fix gconf warnings 2018-12-28 22:22:39 +09:00
images.h kconfig: split images.c out of qconf.cc/gconf.c to fix gconf warnings 2018-12-28 22:22:39 +09:00
lexer.l kconfig: use snprintf for formatting pathnames 2019-05-14 23:23:25 +09:00
list.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
lkc_proto.h kconfig: Fix spelling of sym_is_changable 2019-07-06 21:58:23 +09:00
lkc.h kconfig: Add yes2modconfig and mod2yesconfig targets. 2020-01-07 02:18:45 +09:00
Makefile kbuild: use KBUILD_DEFCONFIG as the fallback for DEFCONFIG_LIST 2020-03-03 20:49:21 +09:00
mconf-cfg.sh kconfig: be more helpful if pkg-config is missing 2019-11-11 20:10:01 +09:00
mconf.c kconfig: fix an "implicit declaration of function" warning 2020-01-10 02:44:54 +09:00
menu.c kconfig: do not assign a variable in the return statement 2020-05-12 13:28:30 +09:00
merge_config.sh merge_config.sh: ignore unwanted grep errors 2019-09-04 23:12:50 +09:00
nconf-cfg.sh kconfig: be more helpful if pkg-config is missing 2019-11-11 20:10:01 +09:00
nconf.c kconfig: fix an "implicit declaration of function" warning 2020-01-10 02:44:54 +09:00
nconf.gui.c kconfig/[mn]conf: handle backspace (^H) key 2019-03-29 22:48:01 +09:00
nconf.h kconfig: convert to SPDX License Identifier 2018-12-28 22:22:28 +09:00
parser.y kconfig: allow only 'config', 'comment', and 'if' inside 'choice' 2020-05-12 13:28:30 +09:00
preprocess.c kconfig: add static qualifier to expand_string() 2019-06-09 15:08:18 +09:00
qconf-cfg.sh kconfig: do not require pkg-config on make {menu,n}config 2018-09-03 02:13:48 +09:00
qconf.cc kconfig: qconf: Fix a few alignment issues 2020-04-09 00:13:45 +09:00
qconf.h kconfig: qconf: fix support for the split view mode 2020-04-09 00:13:45 +09:00
streamline_config.pl kconfig: localmodconfig: fix indentation for closing brace 2020-01-07 02:18:45 +09:00
symbol.c kconfig: do not use OR-assignment for zero-cleared structure 2020-05-12 13:28:30 +09:00
util.c kconfig: convert to SPDX License Identifier 2018-12-28 22:22:28 +09:00