mirror of
https://github.com/oxc-project/oxc.git
synced 2026-09-14 19:36:11 +08:00
47b83115f0
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.
25 lines
965 B
TypeScript
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 };
|