mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-05 08:11:30 -06:00
Merge pull request #49029 from DavidSouther/fix/44466-contextual-keyword-assertion
fix(44466): Fixes parsing contextual keyword casts as arrow functions
This commit is contained in:
commit
3e24f14871
@ -4538,6 +4538,10 @@ namespace ts {
|
||||
// isn't actually allowed, but we want to treat it as a lambda so we can provide
|
||||
// a good error message.
|
||||
if (isModifierKind(second) && second !== SyntaxKind.AsyncKeyword && lookAhead(nextTokenIsIdentifier)) {
|
||||
if (nextToken() === SyntaxKind.AsKeyword) {
|
||||
// https://github.com/microsoft/TypeScript/issues/44466
|
||||
return Tristate.False;
|
||||
}
|
||||
return Tristate.True;
|
||||
}
|
||||
|
||||
|
||||
23
tests/baselines/reference/modifierParenCast.js
Normal file
23
tests/baselines/reference/modifierParenCast.js
Normal file
@ -0,0 +1,23 @@
|
||||
//// [modifierParenCast.ts]
|
||||
let readonly: any = undefined;
|
||||
let override: any = undefined;
|
||||
let out: any = undefined;
|
||||
let declare: any = undefined;
|
||||
|
||||
export const a = (readonly as number);
|
||||
export const b = (override as number);
|
||||
export const c = (out as number);
|
||||
export const d = (declare as number);
|
||||
|
||||
//// [modifierParenCast.js]
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.d = exports.c = exports.b = exports.a = void 0;
|
||||
var readonly = undefined;
|
||||
var override = undefined;
|
||||
var out = undefined;
|
||||
var declare = undefined;
|
||||
exports.a = readonly;
|
||||
exports.b = override;
|
||||
exports.c = out;
|
||||
exports.d = declare;
|
||||
33
tests/baselines/reference/modifierParenCast.symbols
Normal file
33
tests/baselines/reference/modifierParenCast.symbols
Normal file
@ -0,0 +1,33 @@
|
||||
=== tests/cases/compiler/modifierParenCast.ts ===
|
||||
let readonly: any = undefined;
|
||||
>readonly : Symbol(readonly, Decl(modifierParenCast.ts, 0, 3))
|
||||
>undefined : Symbol(undefined)
|
||||
|
||||
let override: any = undefined;
|
||||
>override : Symbol(override, Decl(modifierParenCast.ts, 1, 3))
|
||||
>undefined : Symbol(undefined)
|
||||
|
||||
let out: any = undefined;
|
||||
>out : Symbol(out, Decl(modifierParenCast.ts, 2, 3))
|
||||
>undefined : Symbol(undefined)
|
||||
|
||||
let declare: any = undefined;
|
||||
>declare : Symbol(declare, Decl(modifierParenCast.ts, 3, 3))
|
||||
>undefined : Symbol(undefined)
|
||||
|
||||
export const a = (readonly as number);
|
||||
>a : Symbol(a, Decl(modifierParenCast.ts, 5, 12))
|
||||
>readonly : Symbol(readonly, Decl(modifierParenCast.ts, 0, 3))
|
||||
|
||||
export const b = (override as number);
|
||||
>b : Symbol(b, Decl(modifierParenCast.ts, 6, 12))
|
||||
>override : Symbol(override, Decl(modifierParenCast.ts, 1, 3))
|
||||
|
||||
export const c = (out as number);
|
||||
>c : Symbol(c, Decl(modifierParenCast.ts, 7, 12))
|
||||
>out : Symbol(out, Decl(modifierParenCast.ts, 2, 3))
|
||||
|
||||
export const d = (declare as number);
|
||||
>d : Symbol(d, Decl(modifierParenCast.ts, 8, 12))
|
||||
>declare : Symbol(declare, Decl(modifierParenCast.ts, 3, 3))
|
||||
|
||||
41
tests/baselines/reference/modifierParenCast.types
Normal file
41
tests/baselines/reference/modifierParenCast.types
Normal file
@ -0,0 +1,41 @@
|
||||
=== tests/cases/compiler/modifierParenCast.ts ===
|
||||
let readonly: any = undefined;
|
||||
>readonly : any
|
||||
>undefined : undefined
|
||||
|
||||
let override: any = undefined;
|
||||
>override : any
|
||||
>undefined : undefined
|
||||
|
||||
let out: any = undefined;
|
||||
>out : any
|
||||
>undefined : undefined
|
||||
|
||||
let declare: any = undefined;
|
||||
>declare : any
|
||||
>undefined : undefined
|
||||
|
||||
export const a = (readonly as number);
|
||||
>a : number
|
||||
>(readonly as number) : number
|
||||
>readonly as number : number
|
||||
>readonly : any
|
||||
|
||||
export const b = (override as number);
|
||||
>b : number
|
||||
>(override as number) : number
|
||||
>override as number : number
|
||||
>override : any
|
||||
|
||||
export const c = (out as number);
|
||||
>c : number
|
||||
>(out as number) : number
|
||||
>out as number : number
|
||||
>out : any
|
||||
|
||||
export const d = (declare as number);
|
||||
>d : number
|
||||
>(declare as number) : number
|
||||
>declare as number : number
|
||||
>declare : any
|
||||
|
||||
11
tests/cases/compiler/modifierParenCast.ts
Normal file
11
tests/cases/compiler/modifierParenCast.ts
Normal file
@ -0,0 +1,11 @@
|
||||
//@target: ES5
|
||||
|
||||
let readonly: any = undefined;
|
||||
let override: any = undefined;
|
||||
let out: any = undefined;
|
||||
let declare: any = undefined;
|
||||
|
||||
export const a = (readonly as number);
|
||||
export const b = (override as number);
|
||||
export const c = (out as number);
|
||||
export const d = (declare as number);
|
||||
Loading…
x
Reference in New Issue
Block a user