diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index b20d4b8b8b52e..a7bddf7ef93ec 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -5352,6 +5352,15 @@ namespace Parser { return Tristate.True; } + const isNextTokenGreater = lookAhead(() => { + const third = nextToken(); + return third === SyntaxKind.GreaterThanToken; + }); + + if (isNextTokenGreater) { + return Tristate.Unknown; + } + return Tristate.False; } diff --git a/tests/baselines/reference/jsxGenericArrowFunction.symbols b/tests/baselines/reference/jsxGenericArrowFunction.symbols new file mode 100644 index 0000000000000..f24a510b4be75 --- /dev/null +++ b/tests/baselines/reference/jsxGenericArrowFunction.symbols @@ -0,0 +1,10 @@ +//// [tests/cases/compiler/jsxGenericArrowFunction.tsx] //// + +=== jsxGenericArrowFunction.tsx === +const a = (b: T) => b +>a : Symbol(a, Decl(jsxGenericArrowFunction.tsx, 0, 5)) +>T : Symbol(T, Decl(jsxGenericArrowFunction.tsx, 0, 11)) +>b : Symbol(b, Decl(jsxGenericArrowFunction.tsx, 0, 14)) +>T : Symbol(T, Decl(jsxGenericArrowFunction.tsx, 0, 11)) +>b : Symbol(b, Decl(jsxGenericArrowFunction.tsx, 0, 14)) + diff --git a/tests/baselines/reference/jsxGenericArrowFunction.types b/tests/baselines/reference/jsxGenericArrowFunction.types new file mode 100644 index 0000000000000..507ba00c7dc7b --- /dev/null +++ b/tests/baselines/reference/jsxGenericArrowFunction.types @@ -0,0 +1,13 @@ +//// [tests/cases/compiler/jsxGenericArrowFunction.tsx] //// + +=== jsxGenericArrowFunction.tsx === +const a = (b: T) => b +>a : (b: T) => T +> : ^ ^^ ^^ ^^^^^^ +>(b: T) => b : (b: T) => T +> : ^ ^^ ^^ ^^^^^^ +>b : T +> : ^ +>b : T +> : ^ + diff --git a/tests/cases/compiler/jsxGenericArrowFunction.tsx b/tests/cases/compiler/jsxGenericArrowFunction.tsx new file mode 100644 index 0000000000000..0ac51630b5995 --- /dev/null +++ b/tests/cases/compiler/jsxGenericArrowFunction.tsx @@ -0,0 +1,5 @@ +// @strict: true +// @noEmit: true +// @jsx: preserve + +const a = (b: T) => b \ No newline at end of file