class A extends (() => {}) {} class A extends (B = C) {} class A extends (B || C) {} class A extends (B + C) {} class A extends B() {} class A extends class {} {} class A extends (B ? C : D) {} class A extends (new B()) {} class A extends (B, C) {} class A extends ({}) {} class A extends B.C {} class A extends function() {} {} class A extends (void B) {} class A extends (++B) {} async function f() { class A extends (await C) {} } function* f() { class A extends (yield 1) {} }