"""
Should emit:
B030:
 - line 12, column 8
 - line 17, column 9
 - line 22, column 21
 - line 27, column 37
"""

try:
    pass
except 1:  # Error
    pass

try:
    pass
except (1, ValueError):  # Error
    pass

try:
    pass
except (ValueError, (RuntimeError, (KeyError, TypeError))):  # Error
    pass

try:
    pass
except (ValueError, *(RuntimeError, (KeyError, TypeError))):  # Error
    pass


try:
    pass
except (*a, *(RuntimeError, (KeyError, TypeError))):  # Error
    pass


try:
    pass
except* a + (RuntimeError, (KeyError, TypeError)):  # Error
    pass


try:
    pass
except (ValueError, *(RuntimeError, TypeError)):  # OK
    pass

try:
    pass
except (ValueError, *[RuntimeError, *(TypeError,)]):  # OK
    pass


try:
    pass
except (*a, *b):  # OK
    pass


try:
    pass
except (*a, *(RuntimeError, TypeError)):  # OK
    pass


try:
    pass
except (*a, *(b, c)):  # OK
    pass


try:
    pass
except (*a, *(*b, *c)):  # OK
    pass


def what_to_catch():
    return ...


try:
    pass
except what_to_catch():  # OK
    pass


try:
    pass
except (a, b) + (c, d):  # OK
    pass


try:
    pass
except* (a, b) + (c, d):  # OK
    pass


try:
    pass
except* (a, (b) + (c)):  # OK
    pass


try:
    pass
except (a, b) + (c, d) + (e, f):  # OK
    pass


try:
    pass
except a + (b, c):  # OK
    pass


try:
    pass
except (ValueError, *(RuntimeError, TypeError), *((ArithmeticError,) + (EOFError,))):
    pass


try:
    pass
except ((a, b) + (c, d)) + ((e, f) + (g)):  # OK
    pass

try:
    pass
except (a, b) * (c, d):  # B030
    pass

try:
    pass
except* 1:  # Error
    pass

try:
    pass
except* (1, ValueError):  # Error
    pass

try:
    pass
except* (ValueError, (RuntimeError, (KeyError, TypeError))):  # Error
    pass

try:
    pass
except* (a, b) * (c, d):  # B030
    pass
