config MODULES
    bool "modules"

# bool/tristate and optional

choice BOOL
    bool "bool"
config B_1
    tristate "B_1"
config B_2
    tristate "B_2"
endchoice

choice BOOL_OPT
    bool "bool optional"
    optional
config BO_1
    tristate "BO_1"
config BO_2
    tristate "BO_2"
endchoice

choice TRISTATE
    tristate "tristate"
config T_1
    tristate "T_1"
config T_2
    tristate "T_2"
endchoice

choice TRISTATE_OPT
    tristate "tristate optional"
    optional
config TO_1
    tristate "TO_1"
config TO_2
    tristate "TO_2"
endchoice

# m-visibility

choice BOOL_M
    bool "bool m" if m
config BM_1
    tristate "BM_1"
config BM_2
    tristate "BM_2"
endchoice

choice TRISTATE_M
    tristate "tristate m" if m
config TM_1
    tristate "TM_1"
config TM_2
    tristate "TM_2"
endchoice

# Defaults

config TRISTATE_SYM
    tristate "tristate"

choice DEFAULTS
    bool "defaults"
    default OPT_1 if n
    default OPT_2 if TRISTATE_SYM
    default OPT_4
config OPT_1
    tristate "OPT_1"
config OPT_2
    tristate "OPT_2"
config OPT_3
    tristate "OPT_3"
config OPT_4
    tristate "OPT_4"
endchoice

# Choices without an explicitly specified type should get the type of the first
# symbol with a type

choice NO_TYPE_BOOL
    prompt "no type bool"
config NTB_1
    bool "NTB_1"
config NTB_2
    tristate "NTB_2"
endchoice

choice NO_TYPE_TRISTATE
    prompt "no type tristate"
config NTT_1
config NTT_2
    tristate "NTB_2"
config NTT_3
    bool "NTT_3"
endchoice

# Choice items without an explicitly specified type should get the type of the
# choice

choice MISSING_MEMBER_TYPES_1
    bool "missing member types"
config MMT_1
config MMT_2
config MMT_3
    tristate
endchoice

choice MISSING_MEMBER_TYPES_2
config MMT_4
config MMT_5
    bool
endchoice
