It is not obvious that this might refer to an 'if', making the code pretty cryptic: if (menu->list && (!menu->prompt || !menu->prompt->text)) { Kconfig keeps the 'if' menu nodes even after flattening. Reflect that in the example to be accurate. No functional changes. Only comments added.
Showing the changes to scripts (1 of 1 file). Show all
Unified · Split
| @@ -532,6 +532,35 @@ void menu_finalize(struct menu *parent) · 531 unmodified lines | ||
| 532 | 532 | *ep = expr_alloc_one(E_LIST, NULL); |
| 533 | 533 | (*ep)->right.sym = menu->sym; |
| 534 | 534 | } |
| 535 | + | |
| 536 | + /* | |
| 537 | + * This code serves two purposes: | |
| 538 | + * | |
| 539 | + * (1) Flattening 'if' blocks, which do not specify a submenu | |
| 540 | + * and only add dependencies. | |
| 541 | + * | |
| 542 | + * (Automatic submenu creation might still create a submenu | |
| 543 | + * from an 'if' before this code runs.) | |
| 544 | + * | |
| 545 | + * (2) "Undoing" any automatic submenus created earlier below | |
| 546 | + * promptless symbols. | |
| 547 | + * | |
| 548 | + * Before: | |
| 549 | + * | |
| 550 | + * A | |
| 551 | + * if ... (or promptless symbol) | |
| 552 | + * +-B | |
| 553 | + * +-C | |
| 554 | + * D | |
| 555 | + * | |
| 556 | + * After: | |
| 557 | + * | |
| 558 | + * A | |
| 559 | + * if ... (or promptless symbol) | |
| 560 | + * B | |
| 561 | + * C | |
| 562 | + * D | |
| 563 | + */ | |
| 535 | 564 | if (menu->list && (!menu->prompt || !menu->prompt->text)) { |
| 536 | 565 | for (last_menu = menu->list; ; last_menu = last_menu->next) { |
| 537 | 566 | last_menu->parent = parent; |