From b1fe831e4ad66211261d6d617e6b6c65fe535a68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Thu, 10 Jun 2021 15:07:47 -0400 Subject: [PATCH] fix: disallow JSX tag after non-null assertion (#13449) --- .../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!` + // `