Files
oxc-project__oxc/tasks/coverage/misc/pass/contextual-binding-lookahead.ts
camc314 47b83115f0 fix(parser): recognize contextual binding names in type lookaheads (#26532)
Recognize `await` and `yield` as binding names when looking ahead for TypeScript function types and index signatures. This allows valid syntax such as `(await: number) => void` and `interface I { [await: string]: unknown }`, while leaving contextual legality to actual parsing.
2026-09-10 14:05:25 +00:00

25 lines
965 B
TypeScript

// First parameters take the function-type lookahead; later and generic parameters do not.
let firstAwait: (await: number) => void;
let laterAwait: (value: number, await: number) => void;
let genericAwait: <T>(await: T) => void;
let firstYield: (yield: number) => void;
let laterYield: (value: number, yield: number) => void;
let genericYield: <T>(yield: T) => void;
let optionalAwait: (await?: number) => void;
let optionalYield: (yield?: number) => void;
let untypedAwait: (await) => void;
let untypedYield: (yield) => void;
// Parenthesized types and computed properties must retain their interpretation.
type await = number;
type yield = number;
type AwaitType = (await);
type YieldType = (yield);
const key = "key";
interface Computed { [key]: unknown }
interface AwaitIndex { [await: string]: unknown }
interface YieldIndex { [yield: string]: unknown }
type AwaitIndexType = { [await: string]: unknown };
type YieldIndexType = { [yield: string]: unknown };