From c376be7eabd6c3790024a0991512b3986535e707 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Thu, 10 Jun 2021 09:40:45 -0400 Subject: [PATCH] fix: disallow JSX tag after non-null assertion --- .../src/plugins/typescript/index.js | 4 ++ .../null-assertion-and-relational/input.ts | 1 + .../options.json | 4 ++ .../null-assertion-and-relational/output.json | 60 +++++++++++++++++++ 4 files changed, 69 insertions(+) create mode 100644 packages/babel-parser/test/fixtures/typescript/cast/null-assertion-and-relational/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/cast/null-assertion-and-relational/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/cast/null-assertion-and-relational/output.json diff --git a/packages/babel-parser/src/plugins/typescript/index.js b/packages/babel-parser/src/plugins/typescript/index.js index 78a7f20283fc..9f13c3704a83 100644 --- a/packages/babel-parser/src/plugins/typescript/index.js +++ b/packages/babel-parser/src/plugins/typescript/index.js @@ -2043,6 +2043,10 @@ export default (superClass: Class): Class => state: N.ParseSubscriptState, ): N.Expression { if (!this.hasPrecedingLineBreak() && this.match(tt.bang)) { + // When ! is consumed as a postfix operator (non-null assertion), + // disallow JSX tag forming after. e.g. When parsing `p! < n.p!` + // `