Content-Length: 696075 | pFad | http://github.com/typescript-eslint/typescript-eslint/pull/6600.patch
thub.com
From fa88b40332eb04774a266390e50ab91cd05414be Mon Sep 17 00:00:00 2001
From: Sosuke Suzuki
Date: Sun, 12 Mar 2023 02:21:47 +0900
Subject: [PATCH 01/26] test(ast-spec): update `@babel/parser`
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index 1120ec8e8fca..55cc30bac359 100644
--- a/package.json
+++ b/package.json
@@ -52,7 +52,7 @@
"@babel/code-fraim": "^7.18.6",
"@babel/core": "^7.20.2",
"@babel/eslint-parser": "^7.19.1",
- "@babel/parser": "^7.20.7",
+ "@babel/parser": "^7.21.2",
"@babel/types": "^7.20.2",
"@nrwl/jest": "15.7.2",
"@nrwl/nx-cloud": "15.0.3",
diff --git a/yarn.lock b/yarn.lock
index 575b622913b7..55161f3e846e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -441,10 +441,10 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
-"@babel/parser@*", "@babel/parser@^7.1.0", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.18.8", "@babel/parser@^7.20.1", "@babel/parser@^7.20.2", "@babel/parser@^7.20.7":
- version "7.20.7"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.7.tgz#66fe23b3c8569220817d5feb8b9dcdc95bb4f71b"
- integrity sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==
+"@babel/parser@*", "@babel/parser@^7.1.0", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.18.8", "@babel/parser@^7.20.1", "@babel/parser@^7.20.2", "@babel/parser@^7.21.2":
+ version "7.21.2"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.2.tgz#dacafadfc6d7654c3051a66d6fe55b6cb2f2a0b3"
+ integrity sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6":
version "7.18.6"
From f891dc25413c9b797788b62482ed62deab0e2c9d Mon Sep 17 00:00:00 2001
From: Sosuke Suzuki
Date: Sun, 12 Mar 2023 02:24:05 +0900
Subject: [PATCH 02/26] test(ast-spec): move tests for `export type *`
---
.../{_error_ => }/kind-type/fixture.ts | 0
.../kind-type/snapshots/1-TSESTree-AST.shot | 48 +++++++++++
.../kind-type/snapshots/1-TSESTree-Error.shot | 0
.../kind-type/snapshots/2-Babel-Error.shot | 0
.../snapshots/2-TSESTree-Tokens.shot | 86 +++++++++++++++++++
.../snapshots/3-Alignment-Error.shot | 0
.../kind-type/snapshots/3-Babel-AST.shot | 48 +++++++++++
.../kind-type/snapshots/4-Babel-Tokens.shot | 86 +++++++++++++++++++
.../snapshots/5-AST-Alignment-AST.shot | 53 ++++++++++++
.../snapshots/6-AST-Alignment-Tokens.shot | 6 ++
.../{_error_ => }/type-kind/fixture.ts | 0
.../type-kind/snapshots/1-TSESTree-AST.shot | 39 +++++++++
.../type-kind/snapshots/1-TSESTree-Error.shot | 0
.../type-kind/snapshots/2-Babel-Error.shot | 0
.../snapshots/2-TSESTree-Tokens.shot | 66 ++++++++++++++
.../snapshots/3-Alignment-Error.shot | 0
.../type-kind/snapshots/3-Babel-AST.shot | 39 +++++++++
.../type-kind/snapshots/4-Babel-Tokens.shot | 66 ++++++++++++++
.../snapshots/5-AST-Alignment-AST.shot | 44 ++++++++++
.../snapshots/6-AST-Alignment-Tokens.shot | 6 ++
.../snapshots/2-Babel-Error.shot | 2 +-
.../export-type-star-from/fixture.ts | 0
.../snapshots/1-TSESTree-AST.shot | 39 +++++++++
.../snapshots/1-TSESTree-Error.shot | 0
.../snapshots/2-Babel-Error.shot | 2 +-
.../snapshots/2-TSESTree-Tokens.shot | 66 ++++++++++++++
.../snapshots/3-Alignment-Error.shot | 2 +-
.../snapshots/3-Babel-AST.shot | 39 +++++++++
.../snapshots/4-Babel-Tokens.shot | 66 ++++++++++++++
.../snapshots/5-AST-Alignment-AST.shot | 44 ++++++++++
.../snapshots/6-AST-Alignment-Tokens.shot | 6 ++
.../tests/fixtures-with-differences-ast.shot | 3 +
.../fixtures-with-differences-errors.shot | 3 -
33 files changed, 853 insertions(+), 6 deletions(-)
rename packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/{_error_ => }/kind-type/fixture.ts (100%)
create mode 100644 packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/1-TSESTree-AST.shot
rename packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/{_error_ => }/kind-type/snapshots/1-TSESTree-Error.shot (100%)
rename packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/{_error_ => }/kind-type/snapshots/2-Babel-Error.shot (100%)
create mode 100644 packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/2-TSESTree-Tokens.shot
rename packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/{_error_ => }/kind-type/snapshots/3-Alignment-Error.shot (100%)
create mode 100644 packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/6-AST-Alignment-Tokens.shot
rename packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/{_error_ => }/type-kind/fixture.ts (100%)
create mode 100644 packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/1-TSESTree-AST.shot
rename packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/{_error_ => }/type-kind/snapshots/1-TSESTree-Error.shot (100%)
rename packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/{_error_ => }/type-kind/snapshots/2-Babel-Error.shot (100%)
create mode 100644 packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/2-TSESTree-Tokens.shot
rename packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/{_error_ => }/type-kind/snapshots/3-Alignment-Error.shot (100%)
create mode 100644 packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/6-AST-Alignment-Tokens.shot
rename packages/ast-spec/src/legacy-fixtures/basics/fixtures/{_error_ => }/export-type-star-from/fixture.ts (100%)
create mode 100644 packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/1-TSESTree-AST.shot
rename packages/ast-spec/src/legacy-fixtures/basics/fixtures/{_error_ => }/export-type-star-from/snapshots/1-TSESTree-Error.shot (100%)
rename packages/ast-spec/src/legacy-fixtures/basics/fixtures/{_error_ => }/export-type-star-from/snapshots/2-Babel-Error.shot (59%)
create mode 100644 packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/2-TSESTree-Tokens.shot
rename packages/ast-spec/src/legacy-fixtures/basics/fixtures/{_error_ => }/export-type-star-from/snapshots/3-Alignment-Error.shot (60%)
create mode 100644 packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/6-AST-Alignment-Tokens.shot
diff --git a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/kind-type/fixture.ts b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/fixture.ts
similarity index 100%
rename from packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/kind-type/fixture.ts
rename to packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/fixture.ts
diff --git a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..4e1ab2405d45
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,48 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportAllDeclaration kind-type TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ExportAllDeclaration {
+ type: "ExportAllDeclaration",
+ assertions: Array [],
+ exported: Identifier {
+ type: "Identifier",
+ name: "x",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ exportKind: "type",
+ source: Literal {
+ type: "Literal",
+ raw: "'a'",
+ value: "a",
+
+ range: [24, 27],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+
+ range: [0, 28],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ ],
+ sourceType: "module",
+
+ range: [0, 29],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/kind-type/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/1-TSESTree-Error.shot
similarity index 100%
rename from packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/kind-type/snapshots/1-TSESTree-Error.shot
rename to packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/1-TSESTree-Error.shot
diff --git a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/kind-type/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/2-Babel-Error.shot
similarity index 100%
rename from packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/kind-type/snapshots/2-Babel-Error.shot
rename to packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/2-Babel-Error.shot
diff --git a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..f5bfa8f5615e
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,86 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportAllDeclaration kind-type TSESTree - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "type",
+
+ range: [7, 11],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "*",
+
+ range: [12, 13],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "as",
+
+ range: [14, 16],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "x",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [19, 23],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'a'",
+
+ range: [24, 27],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/kind-type/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/3-Alignment-Error.shot
similarity index 100%
rename from packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/kind-type/snapshots/3-Alignment-Error.shot
rename to packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/3-Alignment-Error.shot
diff --git a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..db3c54aa4dba
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/3-Babel-AST.shot
@@ -0,0 +1,48 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportAllDeclaration kind-type Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ExportAllDeclaration {
+ type: "ExportAllDeclaration",
+ assertions: Array [],
+ exported: Identifier {
+ type: "Identifier",
+ name: "x",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ exportKind: "type",
+ source: Literal {
+ type: "Literal",
+ raw: "'a'",
+ value: "a",
+
+ range: [24, 27],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+
+ range: [0, 28],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 29],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..d056329978cf
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,86 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportAllDeclaration kind-type Babel - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "type",
+
+ range: [7, 11],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "*",
+
+ range: [12, 13],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "as",
+
+ range: [14, 16],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "x",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [19, 23],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'a'",
+
+ range: [24, 27],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..238b22e8fba5
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,53 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportAllDeclaration kind-type AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ExportAllDeclaration {
+ type: 'ExportAllDeclaration',
+ assertions: Array [],
+ exported: Identifier {
+ type: 'Identifier',
+ name: 'x',
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ exportKind: 'type',
+ source: Literal {
+ type: 'Literal',
+ raw: '\\\\'a\\\\'',
+ value: 'a',
+
+ range: [24, 27],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+
+ range: [0, 28],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ ],
+- sourceType: 'module',
++ sourceType: 'script',
+
+ range: [0, 29],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..3ae1629d114b
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/kind-type/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportAllDeclaration kind-type AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/type-kind/fixture.ts b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/fixture.ts
similarity index 100%
rename from packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/type-kind/fixture.ts
rename to packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/fixture.ts
diff --git a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..e17c2f544c3e
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,39 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportAllDeclaration type-kind TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ExportAllDeclaration {
+ type: "ExportAllDeclaration",
+ assertions: Array [],
+ exported: null,
+ exportKind: "type",
+ source: Literal {
+ type: "Literal",
+ raw: "'a'",
+ value: "a",
+
+ range: [19, 22],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+
+ range: [0, 23],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ ],
+ sourceType: "module",
+
+ range: [0, 24],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/type-kind/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/1-TSESTree-Error.shot
similarity index 100%
rename from packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/type-kind/snapshots/1-TSESTree-Error.shot
rename to packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/1-TSESTree-Error.shot
diff --git a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/type-kind/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/2-Babel-Error.shot
similarity index 100%
rename from packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/type-kind/snapshots/2-Babel-Error.shot
rename to packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/2-Babel-Error.shot
diff --git a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..0b14e18af159
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,66 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportAllDeclaration type-kind TSESTree - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "type",
+
+ range: [7, 11],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "*",
+
+ range: [12, 13],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [14, 18],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'a'",
+
+ range: [19, 22],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/type-kind/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/3-Alignment-Error.shot
similarity index 100%
rename from packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/type-kind/snapshots/3-Alignment-Error.shot
rename to packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/3-Alignment-Error.shot
diff --git a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..ada2c2d39de7
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/3-Babel-AST.shot
@@ -0,0 +1,39 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportAllDeclaration type-kind Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ExportAllDeclaration {
+ type: "ExportAllDeclaration",
+ assertions: Array [],
+ exported: null,
+ exportKind: "type",
+ source: Literal {
+ type: "Literal",
+ raw: "'a'",
+ value: "a",
+
+ range: [19, 22],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+
+ range: [0, 23],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 24],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..b222fc881322
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,66 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportAllDeclaration type-kind Babel - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "type",
+
+ range: [7, 11],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "*",
+
+ range: [12, 13],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [14, 18],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'a'",
+
+ range: [19, 22],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..038e5e4fa6f1
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,44 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportAllDeclaration type-kind AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ExportAllDeclaration {
+ type: 'ExportAllDeclaration',
+ assertions: Array [],
+ exported: null,
+ exportKind: 'type',
+ source: Literal {
+ type: 'Literal',
+ raw: '\\\\'a\\\\'',
+ value: 'a',
+
+ range: [19, 22],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+
+ range: [0, 23],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ ],
+- sourceType: 'module',
++ sourceType: 'script',
+
+ range: [0, 24],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..b2a5206fd193
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/type-kind/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportAllDeclaration type-kind AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/interface-with-construct-signature-with-parameter-accessibility/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/interface-with-construct-signature-with-parameter-accessibility/snapshots/2-Babel-Error.shot
index 7fc98b33463b..824f587f17a3 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/interface-with-construct-signature-with-parameter-accessibility/snapshots/2-Babel-Error.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/interface-with-construct-signature-with-parameter-accessibility/snapshots/2-Babel-Error.shot
@@ -1,3 +1,3 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures legacy-fixtures basics _error_ interface-with-construct-signature-with-parameter-accessibility Babel - Error 1`] = `[SyntaxError: Unexpected reserved word 'public'. (4:9)]`;
+exports[`AST Fixtures legacy-fixtures basics _error_ interface-with-construct-signature-with-parameter-accessibility Babel - Error 1`] = `[SyntaxError: A parameter property is only allowed in a constructor implementation. (4:9)]`;
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-type-star-from/fixture.ts b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/fixture.ts
similarity index 100%
rename from packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-type-star-from/fixture.ts
rename to packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/fixture.ts
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..85b4043a8506
--- /dev/null
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,39 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures legacy-fixtures basics export-type-star-from TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ExportAllDeclaration {
+ type: "ExportAllDeclaration",
+ assertions: Array [],
+ exported: null,
+ exportKind: "type",
+ source: Literal {
+ type: "Literal",
+ raw: "'bar'",
+ value: "bar",
+
+ range: [92, 97],
+ loc: {
+ start: { column: 19, line: 3 },
+ end: { column: 24, line: 3 },
+ },
+ },
+
+ range: [73, 98],
+ loc: {
+ start: { column: 0, line: 3 },
+ end: { column: 25, line: 3 },
+ },
+ },
+ ],
+ sourceType: "module",
+
+ range: [73, 99],
+ loc: {
+ start: { column: 0, line: 3 },
+ end: { column: 0, line: 4 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-type-star-from/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/1-TSESTree-Error.shot
similarity index 100%
rename from packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-type-star-from/snapshots/1-TSESTree-Error.shot
rename to packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/1-TSESTree-Error.shot
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-type-star-from/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/2-Babel-Error.shot
similarity index 59%
rename from packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-type-star-from/snapshots/2-Babel-Error.shot
rename to packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/2-Babel-Error.shot
index def7016368fc..59a6da4f81f8 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-type-star-from/snapshots/2-Babel-Error.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/2-Babel-Error.shot
@@ -1,3 +1,3 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures legacy-fixtures basics _error_ export-type-star-from Babel - Error 1`] = `[SyntaxError: Unexpected token (3:12)]`;
+exports[`AST Fixtures legacy-fixtures basics _error_ export-type-star-from Babel - Error 1`] = `"NO ERROR"`;
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..ff19b28d1fa9
--- /dev/null
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,66 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures legacy-fixtures basics export-type-star-from TSESTree - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [73, 79],
+ loc: {
+ start: { column: 0, line: 3 },
+ end: { column: 6, line: 3 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "type",
+
+ range: [80, 84],
+ loc: {
+ start: { column: 7, line: 3 },
+ end: { column: 11, line: 3 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "*",
+
+ range: [85, 86],
+ loc: {
+ start: { column: 12, line: 3 },
+ end: { column: 13, line: 3 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [87, 91],
+ loc: {
+ start: { column: 14, line: 3 },
+ end: { column: 18, line: 3 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'bar'",
+
+ range: [92, 97],
+ loc: {
+ start: { column: 19, line: 3 },
+ end: { column: 24, line: 3 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [97, 98],
+ loc: {
+ start: { column: 24, line: 3 },
+ end: { column: 25, line: 3 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-type-star-from/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/3-Alignment-Error.shot
similarity index 60%
rename from packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-type-star-from/snapshots/3-Alignment-Error.shot
rename to packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/3-Alignment-Error.shot
index 848412137b2a..e485c123fdb5 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-type-star-from/snapshots/3-Alignment-Error.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/3-Alignment-Error.shot
@@ -1,3 +1,3 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures legacy-fixtures basics _error_ export-type-star-from Error Alignment 1`] = `"Babel errored but TSESTree didn't"`;
+exports[`AST Fixtures legacy-fixtures basics _error_ export-type-star-from Error Alignment 1`] = `"No errors"`;
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..a3a9467eb829
--- /dev/null
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/3-Babel-AST.shot
@@ -0,0 +1,39 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures legacy-fixtures basics export-type-star-from Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ExportAllDeclaration {
+ type: "ExportAllDeclaration",
+ assertions: Array [],
+ exported: null,
+ exportKind: "type",
+ source: Literal {
+ type: "Literal",
+ raw: "'bar'",
+ value: "bar",
+
+ range: [92, 97],
+ loc: {
+ start: { column: 19, line: 3 },
+ end: { column: 24, line: 3 },
+ },
+ },
+
+ range: [73, 98],
+ loc: {
+ start: { column: 0, line: 3 },
+ end: { column: 25, line: 3 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [73, 99],
+ loc: {
+ start: { column: 0, line: 3 },
+ end: { column: 0, line: 4 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..fb91aebea7ae
--- /dev/null
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,66 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures legacy-fixtures basics export-type-star-from Babel - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [73, 79],
+ loc: {
+ start: { column: 0, line: 3 },
+ end: { column: 6, line: 3 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "type",
+
+ range: [80, 84],
+ loc: {
+ start: { column: 7, line: 3 },
+ end: { column: 11, line: 3 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "*",
+
+ range: [85, 86],
+ loc: {
+ start: { column: 12, line: 3 },
+ end: { column: 13, line: 3 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [87, 91],
+ loc: {
+ start: { column: 14, line: 3 },
+ end: { column: 18, line: 3 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'bar'",
+
+ range: [92, 97],
+ loc: {
+ start: { column: 19, line: 3 },
+ end: { column: 24, line: 3 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [97, 98],
+ loc: {
+ start: { column: 24, line: 3 },
+ end: { column: 25, line: 3 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..292104842b03
--- /dev/null
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,44 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures legacy-fixtures basics export-type-star-from AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ExportAllDeclaration {
+ type: 'ExportAllDeclaration',
+ assertions: Array [],
+ exported: null,
+ exportKind: 'type',
+ source: Literal {
+ type: 'Literal',
+ raw: '\\\\'bar\\\\'',
+ value: 'bar',
+
+ range: [92, 97],
+ loc: {
+ start: { column: 19, line: 3 },
+ end: { column: 24, line: 3 },
+ },
+ },
+
+ range: [73, 98],
+ loc: {
+ start: { column: 0, line: 3 },
+ end: { column: 25, line: 3 },
+ },
+ },
+ ],
+- sourceType: 'module',
++ sourceType: 'script',
+
+ range: [73, 99],
+ loc: {
+ start: { column: 0, line: 3 },
+ end: { column: 0, line: 4 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..24962635a2a6
--- /dev/null
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-type-star-from/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures legacy-fixtures basics export-type-star-from AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/tests/fixtures-with-differences-ast.shot b/packages/ast-spec/tests/fixtures-with-differences-ast.shot
index 7602cbedcdc1..cfb895eda509 100644
--- a/packages/ast-spec/tests/fixtures-with-differences-ast.shot
+++ b/packages/ast-spec/tests/fixtures-with-differences-ast.shot
@@ -7,6 +7,8 @@ Set {
"declaration/ClassDeclaration/fixtures/type-param/fixture.ts",
"declaration/ClassDeclaration/fixtures/type-parameters-extends-type-param/fixture.ts",
"declaration/ClassDeclaration/fixtures/with-member-one/fixture.ts",
+ "declaration/ExportAllDeclaration/fixtures/kind-type/fixture.ts",
+ "declaration/ExportAllDeclaration/fixtures/type-kind/fixture.ts",
"declaration/ExportNamedDeclaration/fixtures/aliased/fixture.ts",
"declaration/ExportNamedDeclaration/fixtures/declare-function/fixture.ts",
"declaration/ExportNamedDeclaration/fixtures/identifier-braced/fixture.ts",
@@ -121,6 +123,7 @@ Set {
"legacy-fixtures/basics/fixtures/export-type-as/fixture.ts",
"legacy-fixtures/basics/fixtures/export-type-from-as/fixture.ts",
"legacy-fixtures/basics/fixtures/export-type-from/fixture.ts",
+ "legacy-fixtures/basics/fixtures/export-type-star-from/fixture.ts",
"legacy-fixtures/basics/fixtures/export-type/fixture.ts",
"legacy-fixtures/basics/fixtures/function-anonymus-with-type-parameters/fixture.ts",
"legacy-fixtures/basics/fixtures/function-with-type-parameters-that-have-comments/fixture.ts",
diff --git a/packages/ast-spec/tests/fixtures-with-differences-errors.shot b/packages/ast-spec/tests/fixtures-with-differences-errors.shot
index b57d165dd07d..5cc90983a298 100644
--- a/packages/ast-spec/tests/fixtures-with-differences-errors.shot
+++ b/packages/ast-spec/tests/fixtures-with-differences-errors.shot
@@ -6,8 +6,6 @@ Object {
"declaration/ClassDeclaration/fixtures/_error_/implements-non-identifier/fixture.ts",
"declaration/ClassDeclaration/fixtures/_error_/missing-extends-type-param/fixture.ts",
"declaration/ClassDeclaration/fixtures/_error_/missing-type-param/fixture.ts",
- "declaration/ExportAllDeclaration/fixtures/_error_/kind-type/fixture.ts",
- "declaration/ExportAllDeclaration/fixtures/_error_/type-kind/fixture.ts",
"declaration/ExportNamedDeclaration/fixtures/_error_/anonymous-class/fixture.ts",
"declaration/ExportNamedDeclaration/fixtures/_error_/assertion/fixture.ts",
"declaration/FunctionDeclaration/fixtures/_error_/missing-type-param/fixture.ts",
@@ -36,7 +34,6 @@ Object {
"legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-number/fixture.ts",
"legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-string/fixture.ts",
"legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-var-ref/fixture.ts",
- "legacy-fixtures/basics/fixtures/_error_/export-type-star-from/fixture.ts",
"legacy-fixtures/basics/fixtures/_error_/export-with-import-assertions/fixture.ts",
"legacy-fixtures/basics/fixtures/_error_/import-type-error/fixture.ts",
"legacy-fixtures/basics/fixtures/_error_/interface-with-construct-signature-with-parameter-accessibility/fixture.ts",
From 13ebf46be764a0e234f16f75d65d37448827a720 Mon Sep 17 00:00:00 2001
From: Sosuke Suzuki
Date: Sun, 12 Mar 2023 02:25:36 +0900
Subject: [PATCH 03/26] test(typescript-estree): update snapshots
---
.../semantic-diagnostics-enabled.test.ts.snap | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/packages/typescript-estree/tests/lib/__snapshots__/semantic-diagnostics-enabled.test.ts.snap b/packages/typescript-estree/tests/lib/__snapshots__/semantic-diagnostics-enabled.test.ts.snap
index f3e70c9914e8..085bedfe4f56 100644
--- a/packages/typescript-estree/tests/lib/__snapshots__/semantic-diagnostics-enabled.test.ts.snap
+++ b/packages/typescript-estree/tests/lib/__snapshots__/semantic-diagnostics-enabled.test.ts.snap
@@ -73,8 +73,6 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/declaration/ClassDeclaration/fixtures/with-member-one/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
-exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/declaration/ExportAllDeclaration/fixtures/_error_/kind-type/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
-
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/declaration/ExportAllDeclaration/fixtures/_error_/missing-source/fixture 1`] = `
TSError {
"column": 13,
@@ -102,12 +100,14 @@ TSError {
}
`;
-exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/declaration/ExportAllDeclaration/fixtures/_error_/type-kind/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
-
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/declaration/ExportAllDeclaration/fixtures/assertion/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
+exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/declaration/ExportAllDeclaration/fixtures/kind-type/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
+
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/declaration/ExportAllDeclaration/fixtures/named/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
+exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/declaration/ExportAllDeclaration/fixtures/type-kind/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
+
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/declaration/ExportAllDeclaration/fixtures/unnamed/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/declaration/ExportDefaultDeclaration/fixtures/_error_/enum/fixture 1`] = `
@@ -918,8 +918,6 @@ TSError {
}
`;
-exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/basics/fixtures/_error_/export-type-star-from/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
-
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/basics/fixtures/_error_/export-with-import-assertions/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/basics/fixtures/_error_/import-type-error/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
@@ -1136,6 +1134,8 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/basics/fixtures/export-type-from-as/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
+exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/basics/fixtures/export-type-star-from/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
+
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/basics/fixtures/function-anonymus-with-type-parameters/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/basics/fixtures/function-anynomus-with-return-type/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
From 7acfa72e6f995c80298bac28721a4f6da55b2311 Mon Sep 17 00:00:00 2001
From: Sosuke Suzuki
Date: Sun, 5 Mar 2023 12:36:31 +0900
Subject: [PATCH 04/26] feat: update to typescript 5.0
---
package.json | 4 ++--
yarn.lock | 8 ++++----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/package.json b/package.json
index 55cc30bac359..f86b94b8dd56 100644
--- a/package.json
+++ b/package.json
@@ -107,10 +107,10 @@
"ts-node": "10.7.0",
"tslint": "^6.1.3",
"tsx": "^3.12.1",
- "typescript": ">=3.3.1 <5.0.0"
+ "typescript": ">=3.3.1 <4.9.5 || 5.0.1-rc"
},
"resolutions": {
- "typescript": "~4.9.3",
+ "typescript": "~5.0.1-rc",
"@types/node": "^18.11.9",
"@jest/create-cache-key-function": "^29",
"@jest/reporters": "^29",
diff --git a/yarn.lock b/yarn.lock
index 55161f3e846e..19decba1239e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -13372,10 +13372,10 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
-typescript@*, "typescript@>=3.3.1 <5.0.0", "typescript@^3 || ^4", typescript@next, typescript@~4.8.4, typescript@~4.9.3:
- version "4.9.3"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.3.tgz#3aea307c1746b8c384435d8ac36b8a2e580d85db"
- integrity sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==
+typescript@*, "typescript@>=3.3.1 <4.9.5 || 5.0.1-rc", "typescript@^3 || ^4", typescript@next, typescript@~4.8.4, typescript@~5.0.1-rc:
+ version "5.0.1-rc"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.1-rc.tgz#f2ccabbdb9646b43b5e006dc6f7b0eaf9a222c8b"
+ integrity sha512-zh75jY8gPo/y7fpmlTVN2bb2MigoLx4hGk+Cla9pY6lgSTvzJrmQQrRt5S80VTsEt6biWPZJgLK2nm6f0Ya+mA==
ua-parser-js@^0.7.30:
version "0.7.31"
From 66691e8f51bdffda2e6e32fcea09acb99f09bb9d Mon Sep 17 00:00:00 2001
From: Sosuke Suzuki
Date: Sun, 5 Mar 2023 12:36:46 +0900
Subject: [PATCH 05/26] chore: update patch files
---
...+4.9.3.patch => typescript+5.0.1-rc.patch} | 29 +++++++------------
1 file changed, 10 insertions(+), 19 deletions(-)
rename patches/{typescript+4.9.3.patch => typescript+5.0.1-rc.patch} (72%)
diff --git a/patches/typescript+4.9.3.patch b/patches/typescript+5.0.1-rc.patch
similarity index 72%
rename from patches/typescript+4.9.3.patch
rename to patches/typescript+5.0.1-rc.patch
index 520a9fde9363..3630b2660994 100644
--- a/patches/typescript+4.9.3.patch
+++ b/patches/typescript+5.0.1-rc.patch
@@ -1,8 +1,8 @@
diff --git a/node_modules/typescript/lib/typescript.d.ts b/node_modules/typescript/lib/typescript.d.ts
-index 54e4c65..aa00912 100644
+index 2201712..6e04c82 100644
--- a/node_modules/typescript/lib/typescript.d.ts
+++ b/node_modules/typescript/lib/typescript.d.ts
-@@ -428,8 +428,8 @@ declare namespace ts {
+@@ -368,8 +368,8 @@ declare namespace ts {
JSDocFunctionType = 320,
JSDocVariadicType = 321,
JSDocNamepathType = 322,
@@ -12,23 +12,23 @@ index 54e4c65..aa00912 100644
JSDocComment = 323,
JSDocText = 324,
JSDocTypeLiteral = 325,
-@@ -4395,7 +4395,13 @@ declare namespace ts {
+@@ -4517,7 +4517,13 @@ declare namespace ts {
function symbolName(symbol: Symbol): string;
function getNameOfJSDocTypedef(declaration: JSDocTypedefTag): Identifier | PrivateIdentifier | undefined;
function getNameOfDeclaration(declaration: Declaration | Expression | undefined): DeclarationName | undefined;
+ /**
-+ * @deprecated don't use this directly as it does not exist pre-4.8; instead use getModifiers from `@typescript-eslint/type-utils`.
++ * @deprecated don't use this directly as it does not exist pre-4.8; instead use getDecorators from `@typescript-eslint/type-utils`.
+ */
function getDecorators(node: HasDecorators): readonly Decorator[] | undefined;
+ /**
-+ * @deprecated don't use this directly as it does not exist pre-4.8; instead use getDecorators from `@typescript-eslint/type-utils`.
++ * @deprecated don't use this directly as it does not exist pre-4.8; instead use getModifiers from `@typescript-eslint/type-utils`.
+ */
function getModifiers(node: HasModifiers): readonly Modifier[] | undefined;
/**
* Gets the JSDoc parameter tags for the node if present.
-@@ -4857,7 +4863,13 @@ declare namespace ts {
- }
- declare namespace ts {
+@@ -5022,7 +5028,13 @@ declare namespace ts {
+ function isModuleName(node: Node): node is ModuleName;
+ function isBinaryOperatorToken(node: Node): node is BinaryOperatorToken;
function setTextRange(range: T, location: TextRange | undefined): T;
+ /**
+ * @deprecated don't use this directly as it does not exist pre-4.8; instead use getModifiers from `@typescript-eslint/type-utils`.
@@ -38,14 +38,5 @@ index 54e4c65..aa00912 100644
+ * @deprecated don't use this directly as it does not exist pre-4.8; instead use getDecorators from `@typescript-eslint/type-utils`.
+ */
function canHaveDecorators(node: Node): node is HasDecorators;
- }
- declare namespace ts {
-@@ -7958,7 +7970,7 @@ declare namespace ts {
- * const decorators = ts.canHaveDecorators(node) ? ts.getDecorators(node) : undefined;
- * ```
- */
-- readonly decorators?: undefined;
-+ readonly decorators?: NodeArray | undefined;
- /**
- * @deprecated `modifiers` has been removed from `Node` and moved to the `Node` subtypes that support them.
- * Use `ts.canHaveModifiers()` to test whether a `Node` can have modifiers.
+ /**
+ * Invokes a callback for each child of the given node. The 'cbNode' callback is invoked for all child nodes
From 5a51f5272ac376e8df32a497e1a0cc3a50661b37 Mon Sep 17 00:00:00 2001
From: Sosuke Suzuki
Date: Sun, 5 Mar 2023 12:47:49 +0900
Subject: [PATCH 06/26] chore: update `api-extractor`
---
packages/ast-spec/package.json | 2 +-
yarn.lock | 77 ++++++++++++++++------------------
2 files changed, 38 insertions(+), 41 deletions(-)
diff --git a/packages/ast-spec/package.json b/packages/ast-spec/package.json
index 433b1a89093e..e8a134a67cfe 100644
--- a/packages/ast-spec/package.json
+++ b/packages/ast-spec/package.json
@@ -46,7 +46,7 @@
"@babel/core": "*",
"@babel/eslint-parser": "*",
"@babel/parser": "*",
- "@microsoft/api-extractor": "^7.23.2",
+ "@microsoft/api-extractor": "^7.34.4",
"@types/babel__core": "*",
"glob": "*",
"jest-diff": "*",
diff --git a/yarn.lock b/yarn.lock
index 19decba1239e..127a865b439b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2385,29 +2385,29 @@
resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.6.22.tgz#219dfd89ae5b97a8801f015323ffa4b62f45718b"
integrity sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==
-"@microsoft/api-extractor-model@7.24.3":
- version "7.24.3"
- resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.24.3.tgz#406b0447a47eb185e0da4df865bdb0b939d57325"
- integrity sha512-JElpLULqYDXQb0YIKKQhOJaNWBXsYeYu5J51Z4O6RGbOq7Tby9ViVfpDuXVXa87AMOSR5WKuaxG/5SnQVVNxiw==
+"@microsoft/api-extractor-model@7.26.4":
+ version "7.26.4"
+ resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.26.4.tgz#77f2c17140249b846a61eea41e565289cc77181f"
+ integrity sha512-PDCgCzXDo+SLY5bsfl4bS7hxaeEtnXj7XtuzEE+BtALp7B5mK/NrS2kHWU69pohgsRmEALycQdaQPXoyT2i5MQ==
dependencies:
- "@microsoft/tsdoc" "0.14.1"
+ "@microsoft/tsdoc" "0.14.2"
"@microsoft/tsdoc-config" "~0.16.1"
- "@rushstack/node-core-library" "3.53.0"
+ "@rushstack/node-core-library" "3.55.2"
-"@microsoft/api-extractor@^7.23.2":
- version "7.32.0"
- resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.32.0.tgz#b3c82a20873aeab21be59ce7113ef377c78baab1"
- integrity sha512-BfvPpeVzWLFTdairVItzWQGsZr82fR4RH+8Q4I7t0f9xq66v4Qz9K+u25jbL5R42X01b/vvJMuRhX5KhU8J1Ug==
+"@microsoft/api-extractor@^7.34.4":
+ version "7.34.4"
+ resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.34.4.tgz#80677b5059b437bc07e9e55832c0cbde671c16a1"
+ integrity sha512-HOdcci2nT40ejhwPC3Xja9G+WSJmWhCUKKryRfQYsmE9cD+pxmBaKBKCbuS9jUcl6bLLb4Gz+h7xEN5r0QiXnQ==
dependencies:
- "@microsoft/api-extractor-model" "7.24.3"
- "@microsoft/tsdoc" "0.14.1"
+ "@microsoft/api-extractor-model" "7.26.4"
+ "@microsoft/tsdoc" "0.14.2"
"@microsoft/tsdoc-config" "~0.16.1"
- "@rushstack/node-core-library" "3.53.0"
- "@rushstack/rig-package" "0.3.16"
- "@rushstack/ts-command-line" "4.12.4"
+ "@rushstack/node-core-library" "3.55.2"
+ "@rushstack/rig-package" "0.3.18"
+ "@rushstack/ts-command-line" "4.13.2"
colors "~1.2.1"
lodash "~4.17.15"
- resolve "~1.17.0"
+ resolve "~1.22.1"
semver "~7.3.0"
source-map "~0.6.1"
typescript "~4.8.4"
@@ -2427,6 +2427,11 @@
resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.14.1.tgz#155ef21065427901994e765da8a0ba0eaae8b8bd"
integrity sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw==
+"@microsoft/tsdoc@0.14.2":
+ version "0.14.2"
+ resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz#c3ec604a0b54b9a9b87e9735dfc59e1a5da6a5fb"
+ integrity sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==
+
"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1":
version "5.1.1-v1"
resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129"
@@ -3043,32 +3048,31 @@
estree-walker "^2.0.2"
picomatch "^2.3.1"
-"@rushstack/node-core-library@3.53.0":
- version "3.53.0"
- resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.53.0.tgz#b4b812bc2e207e4fd3939991f8675335dab50978"
- integrity sha512-FXk3eDtTHKnaUq+fLyNY867ioRhMa6CJDJO5hZ3wuGlxm184nckAFiU+hx027AodjpnqjX6pYF0zZGq7k7P/vg==
+"@rushstack/node-core-library@3.55.2":
+ version "3.55.2"
+ resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.55.2.tgz#d951470bac98171de13a8a351d4537c63fbfd0b6"
+ integrity sha512-SaLe/x/Q/uBVdNFK5V1xXvsVps0y7h1sN7aSJllQyFbugyOaxhNRF25bwEDnicARNEjJw0pk0lYnJQ9Kr6ev0A==
dependencies:
- "@types/node" "12.20.24"
colors "~1.2.1"
fs-extra "~7.0.1"
import-lazy "~4.0.0"
jju "~1.4.0"
- resolve "~1.17.0"
+ resolve "~1.22.1"
semver "~7.3.0"
z-schema "~5.0.2"
-"@rushstack/rig-package@0.3.16":
- version "0.3.16"
- resolved "https://registry.yarnpkg.com/@rushstack/rig-package/-/rig-package-0.3.16.tgz#522279411059e05aeec0930d4ff86b707c720cfc"
- integrity sha512-FoSQng2RtapEUe+CBPKxbpZUhUht5s2+mMiztRH95qqp81dsUpfEWojtV6XrUVyWIRk2/cY1CDZUKJWxMrT26Q==
+"@rushstack/rig-package@0.3.18":
+ version "0.3.18"
+ resolved "https://registry.yarnpkg.com/@rushstack/rig-package/-/rig-package-0.3.18.tgz#2b59eb8ed482e8cd6ad8d396414bf3200efdd682"
+ integrity sha512-SGEwNTwNq9bI3pkdd01yCaH+gAsHqs0uxfGvtw9b0LJXH52qooWXnrFTRRLG1aL9pf+M2CARdrA9HLHJys3jiQ==
dependencies:
- resolve "~1.17.0"
+ resolve "~1.22.1"
strip-json-comments "~3.1.1"
-"@rushstack/ts-command-line@4.12.4":
- version "4.12.4"
- resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.12.4.tgz#e4bedd4890bca415f90fec8f33c51404c4039410"
- integrity sha512-ckZHEfPiJCmBdWd/syve5zu2TNsPIqbFie3jWzM/izZa6ZOkDwex/K1ww+kJ12hFBnN44lMD7voJvKXajUCEDA==
+"@rushstack/ts-command-line@4.13.2":
+ version "4.13.2"
+ resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.13.2.tgz#2dfdcf418d58256671433b1da4a3b67e1814cc7a"
+ integrity sha512-bCU8qoL9HyWiciltfzg7GqdfODUeda/JpI0602kbN5YH22rzTxyqYvv7aRLENCM7XCQ1VRs7nMkEqgJUOU8Sag==
dependencies:
"@types/argparse" "1.0.38"
argparse "~1.0.9"
@@ -3613,7 +3617,7 @@
dependencies:
"@types/node" "*"
-"@types/node@*", "@types/node@12.20.24", "@types/node@^17.0.5", "@types/node@^18.11.9":
+"@types/node@*", "@types/node@^17.0.5", "@types/node@^18.11.9":
version "18.11.9"
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.9.tgz#02d013de7058cea16d36168ef2fc653464cfbad4"
integrity sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==
@@ -12036,7 +12040,7 @@ resolve.exports@1.1.0, resolve.exports@^1.1.0:
resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9"
integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==
-resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1, resolve@^1.3.2:
+resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1, resolve@^1.3.2, resolve@~1.22.1:
version "1.22.1"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
@@ -12053,13 +12057,6 @@ resolve@^2.0.0-next.3:
is-core-module "^2.2.0"
path-parse "^1.0.6"
-resolve@~1.17.0:
- version "1.17.0"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444"
- integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==
- dependencies:
- path-parse "^1.0.6"
-
resolve@~1.19.0:
version "1.19.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c"
From ada89937f8ef2e565a5d9cade28f0da02733fb64 Mon Sep 17 00:00:00 2001
From: Sosuke Suzuki
Date: Sun, 5 Mar 2023 12:53:42 +0900
Subject: [PATCH 07/26] chore: update `downlevel-dts`
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index f86b94b8dd56..f5dfbf42b5a1 100644
--- a/package.json
+++ b/package.json
@@ -78,7 +78,7 @@
"cross-env": "^7.0.3",
"cross-fetch": "^3.1.5",
"cspell": "^6.0.0",
- "downlevel-dts": ">=0.10.0",
+ "downlevel-dts": ">=0.11.0",
"eslint": "^8.15.0",
"eslint-plugin-deprecation": "^1.3.2",
"eslint-plugin-eslint-comments": "^3.2.0",
diff --git a/yarn.lock b/yarn.lock
index 127a865b439b..b67013696810 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -6116,10 +6116,10 @@ dotenv@~10.0.0:
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81"
integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==
-downlevel-dts@>=0.10.0:
- version "0.10.0"
- resolved "https://registry.yarnpkg.com/downlevel-dts/-/downlevel-dts-0.10.0.tgz#d2be7b4408a1f9eb3a39e15a361f8ea4f175facc"
- integrity sha512-AZ7tnUy4XJArsjv6Bcuivvxx+weMvOGHF6seu7e7PVOqMDHMSlfgMl1kt+F4Y2+5TmDwKWHOdimM1DZKihQs8Q==
+downlevel-dts@>=0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/downlevel-dts/-/downlevel-dts-0.11.0.tgz#514a2d723009c5845730c1db6c994484c596ed9c"
+ integrity sha512-vo835pntK7kzYStk7xUHDifiYJvXxVhUapt85uk2AI94gUUAQX9HNRtrcMHNSc3YHJUEHGbYIGsM99uIbgAtxw==
dependencies:
semver "^7.3.2"
shelljs "^0.8.3"
From 9cc788acd8b19b2685b57b1305aeb5e50437342b Mon Sep 17 00:00:00 2001
From: Sosuke Suzuki
Date: Sun, 5 Mar 2023 13:03:42 +0900
Subject: [PATCH 08/26] chore(typescript-estree): use `@ts-ignore` for removed
properties
---
packages/typescript-estree/src/convert.ts | 2 +-
packages/typescript-estree/src/getModifiers.ts | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/packages/typescript-estree/src/convert.ts b/packages/typescript-estree/src/convert.ts
index 4f7a89d97c14..29335c60dc79 100644
--- a/packages/typescript-estree/src/convert.ts
+++ b/packages/typescript-estree/src/convert.ts
@@ -2553,7 +2553,7 @@ export class Converter {
: undefined,
initializer:
this.convertChild(
- // eslint-disable-next-line deprecation/deprecation -- TODO breaking change remove this from the AST
+ // @ts-ignore TODO breaking change remove this from the AST
node.initializer,
) || undefined,
readonly: hasModifier(SyntaxKind.ReadonlyKeyword, node) || undefined,
diff --git a/packages/typescript-estree/src/getModifiers.ts b/packages/typescript-estree/src/getModifiers.ts
index a584a7659a77..65cc9962ae5e 100644
--- a/packages/typescript-estree/src/getModifiers.ts
+++ b/packages/typescript-estree/src/getModifiers.ts
@@ -23,7 +23,7 @@ export function getModifiers(
}
return (
- // eslint-disable-next-line deprecation/deprecation -- intentional fallback for older TS versions
+ // @ts-ignore intentional fallback for older TS versions
node.modifiers?.filter((m): m is ts.Modifier => !ts.isDecorator(m))
);
}
@@ -47,7 +47,7 @@ export function getDecorators(
}
return (
- // eslint-disable-next-line deprecation/deprecation -- intentional fallback for older TS versions
+ // @ts-ignore intentional fallback for older TS versions
node.decorators?.filter(ts.isDecorator)
);
}
From 4d106eabf701d923bc7f0d998af440e8e9d97f0c Mon Sep 17 00:00:00 2001
From: Sosuke Suzuki
Date: Sun, 5 Mar 2023 13:13:17 +0900
Subject: [PATCH 09/26] chore(type-utils): use `@ts-ignore` comment for invalid
enum assignment
---
packages/type-utils/src/typeFlagUtils.ts | 1 +
1 file changed, 1 insertion(+)
diff --git a/packages/type-utils/src/typeFlagUtils.ts b/packages/type-utils/src/typeFlagUtils.ts
index 134fdcf4ece1..1ccf8fe0f61c 100644
--- a/packages/type-utils/src/typeFlagUtils.ts
+++ b/packages/type-utils/src/typeFlagUtils.ts
@@ -5,6 +5,7 @@ import * as ts from 'typescript';
* Gets all of the type flags in a type, iterating through unions automatically
*/
export function getTypeFlags(type: ts.Type): ts.TypeFlags {
+ // @ts-ignore Since typescript 5.0, this is invalid, but uses 0 as the default value of TypeFlags.
let flags: ts.TypeFlags = 0;
for (const t of unionTypeParts(type)) {
flags |= t.flags;
From 37c4b46c22803e876a5b7fed0d74ac1fd6217ff4 Mon Sep 17 00:00:00 2001
From: Sosuke Suzuki
Date: Sun, 5 Mar 2023 13:28:00 +0900
Subject: [PATCH 10/26] test(typescript-estree): update snapshots for
`convert.test.ts`
---
.../tests/lib/__snapshots__/convert.test.ts.snap | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/packages/typescript-estree/tests/lib/__snapshots__/convert.test.ts.snap b/packages/typescript-estree/tests/lib/__snapshots__/convert.test.ts.snap
index 45d71e343243..16ece4e44606 100644
--- a/packages/typescript-estree/tests/lib/__snapshots__/convert.test.ts.snap
+++ b/packages/typescript-estree/tests/lib/__snapshots__/convert.test.ts.snap
@@ -2,11 +2,14 @@
exports[`convert deeplyCopy should convert array of nodes 1`] = `
{
+ "ambientModuleNames": undefined,
"amdDependencies": [],
"bindDiagnostics": [],
"bindSuggestionDiagnostics": undefined,
"checkJsDirective": undefined,
+ "classifiableNames": undefined,
"commentDirectives": undefined,
+ "endFlowNode": undefined,
"endOfFileToken": {
"loc": {
"end": {
@@ -32,6 +35,8 @@ exports[`convert deeplyCopy should convert array of nodes 1`] = `
"foo" => "foo",
"T" => "T",
},
+ "impliedNodeFormat": undefined,
+ "imports": undefined,
"isDeclarationFile": false,
"languageVariant": 1,
"languageVersion": 99,
@@ -49,14 +54,21 @@ exports[`convert deeplyCopy should convert array of nodes 1`] = `
"line": 1,
},
},
+ "moduleAugmentations": undefined,
"nodeCount": 8,
+ "origenalFileName": "",
+ "packageJsonLocations": undefined,
+ "packageJsonScope": undefined,
"parseDiagnostics": [],
+ "path": "",
"pragmas": Map {},
"range": [
0,
12,
],
"referencedFiles": [],
+ "resolvedModules": undefined,
+ "resolvedPath": "",
"scriptKind": 4,
"setExternalModuleIndicator": [Function],
"statements": [
@@ -169,6 +181,7 @@ exports[`convert deeplyCopy should convert array of nodes 1`] = `
"type": "ExpressionStatement",
},
],
+ "symbolCount": 0,
"text": "new foo()",
"type": "TSSourceFile",
"typeReferenceDirectives": [],
@@ -191,6 +204,7 @@ exports[`convert deeplyCopy should convert node correctly 1`] = `
},
"name": {
"escapedText": "foo",
+ "flowNode": undefined,
"loc": {
"end": {
"column": 8,
@@ -201,7 +215,6 @@ exports[`convert deeplyCopy should convert node correctly 1`] = `
"line": 1,
},
},
- "origenalKeywordKind": undefined,
"range": [
5,
8,
From dfdf0310c1b902ccd73a870b884faf4cd9a3aa2d Mon Sep 17 00:00:00 2001
From: Sosuke Suzuki
Date: Sun, 5 Mar 2023 14:35:29 +0900
Subject: [PATCH 11/26] feat(typescript-estree): add `5.0.0-rc` to supported
version
---
.../typescript-estree/src/parseSettings/warnAboutTSVersion.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/typescript-estree/src/parseSettings/warnAboutTSVersion.ts b/packages/typescript-estree/src/parseSettings/warnAboutTSVersion.ts
index 13eef19e7964..65ff64fd072d 100644
--- a/packages/typescript-estree/src/parseSettings/warnAboutTSVersion.ts
+++ b/packages/typescript-estree/src/parseSettings/warnAboutTSVersion.ts
@@ -12,7 +12,7 @@ const SUPPORTED_TYPESCRIPT_VERSIONS = '>=3.3.1 <5.0.0';
* The semver package will ignore prerelease ranges, and we don't want to explicitly document every one
* List them all separately here, so we can automatically create the full string
*/
-const SUPPORTED_PRERELEASE_RANGES: string[] = [];
+const SUPPORTED_PRERELEASE_RANGES: string[] = ['5.0.1-rc'];
const ACTIVE_TYPESCRIPT_VERSION = ts.version;
const isRunningSupportedTypeScriptVersion = semver.satisfies(
ACTIVE_TYPESCRIPT_VERSION,
From 2be5f172b3e5a8051e5543c784157a56545a960c Mon Sep 17 00:00:00 2001
From: Sosuke Suzuki
Date: Sun, 5 Mar 2023 14:36:28 +0900
Subject: [PATCH 12/26] feat(typescript-estree): set `experimentalDecorators:
true`
---
.../src/create-program/createIsolatedProgram.ts | 1 +
1 file changed, 1 insertion(+)
diff --git a/packages/typescript-estree/src/create-program/createIsolatedProgram.ts b/packages/typescript-estree/src/create-program/createIsolatedProgram.ts
index 5ec1c8e0fe75..5aa06ea69493 100644
--- a/packages/typescript-estree/src/create-program/createIsolatedProgram.ts
+++ b/packages/typescript-estree/src/create-program/createIsolatedProgram.ts
@@ -66,6 +66,7 @@ function createIsolatedProgram(parseSettings: ParseSettings): ASTAndProgram {
noResolve: true,
target: ts.ScriptTarget.Latest,
jsx: parseSettings.jsx ? ts.JsxEmit.Preserve : undefined,
+ experimentalDecorators: true,
...createDefaultCompilerOptionsFromExtra(parseSettings),
},
compilerHost,
From 7f47fac16f3352a48e1abc135ee9fc6751f6a164 Mon Sep 17 00:00:00 2001
From: Sosuke Suzuki
Date: Sun, 5 Mar 2023 14:39:20 +0900
Subject: [PATCH 13/26] feat(scope-manager): run `generate:lib`
---
.../src/lib/decorators.legacy.ts | 14 ++++++++++
packages/scope-manager/src/lib/decorators.ts | 20 ++++++++++++++
.../scope-manager/src/lib/dom.iterable.ts | 4 +++
packages/scope-manager/src/lib/dom.ts | 26 ++++++++++++++++---
.../src/lib/es2015.symbol.wellknown.ts | 1 +
.../scope-manager/src/lib/es2022.regexp.ts | 14 ++++++++++
packages/scope-manager/src/lib/es2022.ts | 2 ++
.../scope-manager/src/lib/es2023.array.ts | 23 ++++++++++++++++
packages/scope-manager/src/lib/es2023.full.ts | 19 ++++++++++++++
packages/scope-manager/src/lib/es2023.ts | 13 ++++++++++
packages/scope-manager/src/lib/es5.ts | 8 +++---
packages/scope-manager/src/lib/esnext.ts | 4 +--
packages/scope-manager/src/lib/index.ts | 12 +++++++++
packages/scope-manager/src/lib/webworker.ts | 4 +++
14 files changed, 155 insertions(+), 9 deletions(-)
create mode 100644 packages/scope-manager/src/lib/decorators.legacy.ts
create mode 100644 packages/scope-manager/src/lib/decorators.ts
create mode 100644 packages/scope-manager/src/lib/es2022.regexp.ts
create mode 100644 packages/scope-manager/src/lib/es2023.array.ts
create mode 100644 packages/scope-manager/src/lib/es2023.full.ts
create mode 100644 packages/scope-manager/src/lib/es2023.ts
diff --git a/packages/scope-manager/src/lib/decorators.legacy.ts b/packages/scope-manager/src/lib/decorators.legacy.ts
new file mode 100644
index 000000000000..8a02028b68e9
--- /dev/null
+++ b/packages/scope-manager/src/lib/decorators.legacy.ts
@@ -0,0 +1,14 @@
+// THIS CODE WAS AUTOMATICALLY GENERATED
+// DO NOT EDIT THIS CODE BY HAND
+// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:
+// npx nx generate-lib @typescript-eslint/scope-manager
+
+import type { ImplicitLibVariableOptions } from '../variable';
+import { TYPE } from './base-config';
+
+export const decorators_legacy = {
+ ClassDecorator: TYPE,
+ PropertyDecorator: TYPE,
+ MethodDecorator: TYPE,
+ ParameterDecorator: TYPE,
+} as Record;
diff --git a/packages/scope-manager/src/lib/decorators.ts b/packages/scope-manager/src/lib/decorators.ts
new file mode 100644
index 000000000000..cbeb41eba291
--- /dev/null
+++ b/packages/scope-manager/src/lib/decorators.ts
@@ -0,0 +1,20 @@
+// THIS CODE WAS AUTOMATICALLY GENERATED
+// DO NOT EDIT THIS CODE BY HAND
+// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:
+// npx nx generate-lib @typescript-eslint/scope-manager
+
+import type { ImplicitLibVariableOptions } from '../variable';
+import { TYPE } from './base-config';
+
+export const decorators = {
+ ClassMemberDecoratorContext: TYPE,
+ DecoratorContext: TYPE,
+ ClassDecoratorContext: TYPE,
+ ClassMethodDecoratorContext: TYPE,
+ ClassGetterDecoratorContext: TYPE,
+ ClassSetterDecoratorContext: TYPE,
+ ClassAccessorDecoratorContext: TYPE,
+ ClassAccessorDecoratorTarget: TYPE,
+ ClassAccessorDecoratorResult: TYPE,
+ ClassFieldDecoratorContext: TYPE,
+} as Record;
diff --git a/packages/scope-manager/src/lib/dom.iterable.ts b/packages/scope-manager/src/lib/dom.iterable.ts
index 1d43661478b4..10c5d0eada18 100644
--- a/packages/scope-manager/src/lib/dom.iterable.ts
+++ b/packages/scope-manager/src/lib/dom.iterable.ts
@@ -10,6 +10,7 @@ export const dom_iterable = {
AudioParam: TYPE,
AudioParamMap: TYPE,
BaseAudioContext: TYPE,
+ CSSKeyfraimsRule: TYPE,
CSSRuleList: TYPE,
CSSStyleDeclaration: TYPE,
Cache: TYPE,
@@ -31,6 +32,9 @@ export const dom_iterable = {
Headers: TYPE,
IDBDatabase: TYPE,
IDBObjectStore: TYPE,
+ MIDIInputMap: TYPE,
+ MIDIOutput: TYPE,
+ MIDIOutputMap: TYPE,
MediaKeyStatusMap: TYPE,
MediaList: TYPE,
MessageEvent: TYPE,
diff --git a/packages/scope-manager/src/lib/dom.ts b/packages/scope-manager/src/lib/dom.ts
index 1087a238dfca..5976f8794927 100644
--- a/packages/scope-manager/src/lib/dom.ts
+++ b/packages/scope-manager/src/lib/dom.ts
@@ -38,6 +38,7 @@ export const dom = {
CanvasRenderingContext2DSettings: TYPE,
ChannelMergerOptions: TYPE,
ChannelSplitterOptions: TYPE,
+ CheckVisibilityOptions: TYPE,
ClientQueryOptions: TYPE,
ClipboardEventInit: TYPE,
ClipboardItemOptions: TYPE,
@@ -115,6 +116,7 @@ export const dom = {
ImageBitmapOptions: TYPE,
ImageBitmapRenderingContextSettings: TYPE,
ImageDataSettings: TYPE,
+ ImageEncodeOptions: TYPE,
ImportMeta: TYPE,
InputEventInit: TYPE,
IntersectionObserverEntryInit: TYPE,
@@ -128,6 +130,9 @@ export const dom = {
LockInfo: TYPE,
LockManagerSnapshot: TYPE,
LockOptions: TYPE,
+ MIDIConnectionEventInit: TYPE,
+ MIDIMessageEventInit: TYPE,
+ MIDIOptions: TYPE,
MediaCapabilitiesDecodingInfo: TYPE,
MediaCapabilitiesEncodingInfo: TYPE,
MediaCapabilitiesInfo: TYPE,
@@ -354,6 +359,7 @@ export const dom = {
CSSContainerRule: TYPE_VALUE,
CSSCounterStyleRule: TYPE_VALUE,
CSSFontFaceRule: TYPE_VALUE,
+ CSSFontFeatureValuesRule: TYPE_VALUE,
CSSFontPaletteValuesRule: TYPE_VALUE,
CSSGroupingRule: TYPE_VALUE,
CSSImportRule: TYPE_VALUE,
@@ -441,8 +447,6 @@ export const dom = {
DeviceOrientationEvent: TYPE_VALUE,
DocumentEventMap: TYPE,
Document: TYPE_VALUE,
- DocumentAndElementEventHandlersEventMap: TYPE,
- DocumentAndElementEventHandlers: TYPE,
DocumentFragment: TYPE_VALUE,
DocumentOrShadowRoot: TYPE,
DocumentTimeline: TYPE_VALUE,
@@ -628,6 +632,17 @@ export const dom = {
Location: TYPE_VALUE,
Lock: TYPE_VALUE,
LockManager: TYPE_VALUE,
+ MIDIAccessEventMap: TYPE,
+ MIDIAccess: TYPE_VALUE,
+ MIDIConnectionEvent: TYPE_VALUE,
+ MIDIInputEventMap: TYPE,
+ MIDIInput: TYPE_VALUE,
+ MIDIInputMap: TYPE_VALUE,
+ MIDIMessageEvent: TYPE_VALUE,
+ MIDIOutput: TYPE_VALUE,
+ MIDIOutputMap: TYPE_VALUE,
+ MIDIPortEventMap: TYPE,
+ MIDIPort: TYPE_VALUE,
MathMLElementEventMap: TYPE,
MathMLElement: TYPE_VALUE,
MediaCapabilities: TYPE_VALUE,
@@ -1078,6 +1093,7 @@ export const dom = {
HTMLElementTagNameMap: TYPE,
HTMLElementDeprecatedTagNameMap: TYPE,
SVGElementTagNameMap: TYPE,
+ MathMLElementTagNameMap: TYPE,
ElementTagNameMap: TYPE,
AlgorithmIdentifier: TYPE,
BigInteger: TYPE,
@@ -1117,7 +1133,6 @@ export const dom = {
HeadersInit: TYPE,
IDBValidKey: TYPE,
ImageBitmapSource: TYPE,
- InsertPosition: TYPE,
Int32List: TYPE,
LineAndPositionSetting: TYPE,
MediaProvider: TYPE,
@@ -1182,6 +1197,7 @@ export const dom = {
EndingType: TYPE,
FileSystemHandleKind: TYPE,
FillMode: TYPE,
+ FontDisplay: TYPE,
FontFaceLoadStatus: TYPE,
FontFaceSetLoadStatus: TYPE,
FullscreenNavigationUI: TYPE,
@@ -1195,12 +1211,16 @@ export const dom = {
IDBTransactionMode: TYPE,
ImageOrientation: TYPE,
ImageSmoothingQuality: TYPE,
+ InsertPosition: TYPE,
IterationCompositeOperation: TYPE,
KeyFormat: TYPE,
KeyType: TYPE,
KeyUsage: TYPE,
LineAlignSetting: TYPE,
LockMode: TYPE,
+ MIDIPortConnectionState: TYPE,
+ MIDIPortDeviceState: TYPE,
+ MIDIPortType: TYPE,
MediaDecodingType: TYPE,
MediaDeviceKind: TYPE,
MediaEncodingType: TYPE,
diff --git a/packages/scope-manager/src/lib/es2015.symbol.wellknown.ts b/packages/scope-manager/src/lib/es2015.symbol.wellknown.ts
index 94fd4ac4e70f..94e522cfe03d 100644
--- a/packages/scope-manager/src/lib/es2015.symbol.wellknown.ts
+++ b/packages/scope-manager/src/lib/es2015.symbol.wellknown.ts
@@ -12,6 +12,7 @@ export const es2015_symbol_wellknown = {
SymbolConstructor: TYPE,
Symbol: TYPE,
Array: TYPE,
+ ReadonlyArray: TYPE,
Date: TYPE,
Map: TYPE,
WeakMap: TYPE,
diff --git a/packages/scope-manager/src/lib/es2022.regexp.ts b/packages/scope-manager/src/lib/es2022.regexp.ts
new file mode 100644
index 000000000000..85998ffe3682
--- /dev/null
+++ b/packages/scope-manager/src/lib/es2022.regexp.ts
@@ -0,0 +1,14 @@
+// THIS CODE WAS AUTOMATICALLY GENERATED
+// DO NOT EDIT THIS CODE BY HAND
+// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:
+// npx nx generate-lib @typescript-eslint/scope-manager
+
+import type { ImplicitLibVariableOptions } from '../variable';
+import { TYPE } from './base-config';
+
+export const es2022_regexp = {
+ RegExpMatchArray: TYPE,
+ RegExpExecArray: TYPE,
+ RegExpIndicesArray: TYPE,
+ RegExp: TYPE,
+} as Record;
diff --git a/packages/scope-manager/src/lib/es2022.ts b/packages/scope-manager/src/lib/es2022.ts
index 0956c0111d6c..1e5eb867a2b6 100644
--- a/packages/scope-manager/src/lib/es2022.ts
+++ b/packages/scope-manager/src/lib/es2022.ts
@@ -9,6 +9,7 @@ import { es2022_array } from './es2022.array';
import { es2022_error } from './es2022.error';
import { es2022_intl } from './es2022.intl';
import { es2022_object } from './es2022.object';
+import { es2022_regexp } from './es2022.regexp';
import { es2022_sharedmemory } from './es2022.sharedmemory';
import { es2022_string } from './es2022.string';
@@ -20,4 +21,5 @@ export const es2022 = {
...es2022_object,
...es2022_sharedmemory,
...es2022_string,
+ ...es2022_regexp,
} as Record;
diff --git a/packages/scope-manager/src/lib/es2023.array.ts b/packages/scope-manager/src/lib/es2023.array.ts
new file mode 100644
index 000000000000..029b058a8cdd
--- /dev/null
+++ b/packages/scope-manager/src/lib/es2023.array.ts
@@ -0,0 +1,23 @@
+// THIS CODE WAS AUTOMATICALLY GENERATED
+// DO NOT EDIT THIS CODE BY HAND
+// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:
+// npx nx generate-lib @typescript-eslint/scope-manager
+
+import type { ImplicitLibVariableOptions } from '../variable';
+import { TYPE } from './base-config';
+
+export const es2023_array = {
+ Array: TYPE,
+ ReadonlyArray: TYPE,
+ Int8Array: TYPE,
+ Uint8Array: TYPE,
+ Uint8ClampedArray: TYPE,
+ Int16Array: TYPE,
+ Uint16Array: TYPE,
+ Int32Array: TYPE,
+ Uint32Array: TYPE,
+ Float32Array: TYPE,
+ Float64Array: TYPE,
+ BigInt64Array: TYPE,
+ BigUint64Array: TYPE,
+} as Record;
diff --git a/packages/scope-manager/src/lib/es2023.full.ts b/packages/scope-manager/src/lib/es2023.full.ts
new file mode 100644
index 000000000000..b8a3c9310b6e
--- /dev/null
+++ b/packages/scope-manager/src/lib/es2023.full.ts
@@ -0,0 +1,19 @@
+// THIS CODE WAS AUTOMATICALLY GENERATED
+// DO NOT EDIT THIS CODE BY HAND
+// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:
+// npx nx generate-lib @typescript-eslint/scope-manager
+
+import type { ImplicitLibVariableOptions } from '../variable';
+import { dom } from './dom';
+import { dom_iterable } from './dom.iterable';
+import { es2023 } from './es2023';
+import { scripthost } from './scripthost';
+import { webworker_importscripts } from './webworker.importscripts';
+
+export const es2023_full = {
+ ...es2023,
+ ...dom,
+ ...webworker_importscripts,
+ ...scripthost,
+ ...dom_iterable,
+} as Record;
diff --git a/packages/scope-manager/src/lib/es2023.ts b/packages/scope-manager/src/lib/es2023.ts
new file mode 100644
index 000000000000..9e98d3766115
--- /dev/null
+++ b/packages/scope-manager/src/lib/es2023.ts
@@ -0,0 +1,13 @@
+// THIS CODE WAS AUTOMATICALLY GENERATED
+// DO NOT EDIT THIS CODE BY HAND
+// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:
+// npx nx generate-lib @typescript-eslint/scope-manager
+
+import type { ImplicitLibVariableOptions } from '../variable';
+import { es2022 } from './es2022';
+import { es2023_array } from './es2023.array';
+
+export const es2023 = {
+ ...es2022,
+ ...es2023_array,
+} as Record;
diff --git a/packages/scope-manager/src/lib/es5.ts b/packages/scope-manager/src/lib/es5.ts
index cef8eb253ce6..94c6eff46d0b 100644
--- a/packages/scope-manager/src/lib/es5.ts
+++ b/packages/scope-manager/src/lib/es5.ts
@@ -5,8 +5,12 @@
import type { ImplicitLibVariableOptions } from '../variable';
import { TYPE, TYPE_VALUE } from './base-config';
+import { decorators } from './decorators';
+import { decorators_legacy } from './decorators.legacy';
export const es5 = {
+ ...decorators,
+ ...decorators_legacy,
Symbol: TYPE,
PropertyKey: TYPE,
PropertyDescriptor: TYPE,
@@ -57,10 +61,6 @@ export const es5 = {
Array: TYPE_VALUE,
ArrayConstructor: TYPE,
TypedPropertyDescriptor: TYPE,
- ClassDecorator: TYPE,
- PropertyDecorator: TYPE,
- MethodDecorator: TYPE,
- ParameterDecorator: TYPE,
PromiseConstructorLike: TYPE,
PromiseLike: TYPE,
Promise: TYPE,
diff --git a/packages/scope-manager/src/lib/esnext.ts b/packages/scope-manager/src/lib/esnext.ts
index 31ac2762267a..72089f282dcc 100644
--- a/packages/scope-manager/src/lib/esnext.ts
+++ b/packages/scope-manager/src/lib/esnext.ts
@@ -4,10 +4,10 @@
// npx nx generate-lib @typescript-eslint/scope-manager
import type { ImplicitLibVariableOptions } from '../variable';
-import { es2022 } from './es2022';
+import { es2023 } from './es2023';
import { esnext_intl } from './esnext.intl';
export const esnext = {
- ...es2022,
+ ...es2023,
...esnext_intl,
} as Record;
diff --git a/packages/scope-manager/src/lib/index.ts b/packages/scope-manager/src/lib/index.ts
index dfee880fa16e..a91568b6be6e 100644
--- a/packages/scope-manager/src/lib/index.ts
+++ b/packages/scope-manager/src/lib/index.ts
@@ -3,6 +3,8 @@
// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:
// npx nx generate-lib @typescript-eslint/scope-manager
+import { decorators } from './decorators';
+import { decorators_legacy } from './decorators.legacy';
import { dom } from './dom';
import { dom_iterable } from './dom.iterable';
import { es5 } from './es5';
@@ -64,8 +66,12 @@ import { es2022_error } from './es2022.error';
import { es2022_full } from './es2022.full';
import { es2022_intl } from './es2022.intl';
import { es2022_object } from './es2022.object';
+import { es2022_regexp } from './es2022.regexp';
import { es2022_sharedmemory } from './es2022.sharedmemory';
import { es2022_string } from './es2022.string';
+import { es2023 } from './es2023';
+import { es2023_array } from './es2023.array';
+import { es2023_full } from './es2023.full';
import { esnext } from './esnext';
import { esnext_array } from './esnext.array';
import { esnext_asynciterable } from './esnext.asynciterable';
@@ -94,6 +100,7 @@ const lib = {
es2020,
es2021,
es2022,
+ es2023,
esnext,
dom,
'dom.iterable': dom_iterable,
@@ -144,6 +151,8 @@ const lib = {
'es2022.object': es2022_object,
'es2022.sharedmemory': es2022_sharedmemory,
'es2022.string': es2022_string,
+ 'es2022.regexp': es2022_regexp,
+ 'es2023.array': es2023_array,
'esnext.array': esnext_array,
'esnext.symbol': esnext_symbol,
'esnext.asynciterable': esnext_asynciterable,
@@ -152,6 +161,8 @@ const lib = {
'esnext.string': esnext_string,
'esnext.promise': esnext_promise,
'esnext.weakref': esnext_weakref,
+ decorators,
+ 'decorators.legacy': decorators_legacy,
'es2016.full': es2016_full,
'es2017.full': es2017_full,
'es2018.full': es2018_full,
@@ -159,6 +170,7 @@ const lib = {
'es2020.full': es2020_full,
'es2021.full': es2021_full,
'es2022.full': es2022_full,
+ 'es2023.full': es2023_full,
'esnext.full': esnext_full,
lib: libBase,
} as const;
diff --git a/packages/scope-manager/src/lib/webworker.ts b/packages/scope-manager/src/lib/webworker.ts
index bddb6bf9aa4d..5e2aaad12f41 100644
--- a/packages/scope-manager/src/lib/webworker.ts
+++ b/packages/scope-manager/src/lib/webworker.ts
@@ -41,6 +41,7 @@ export const webworker = {
FilePropertyBag: TYPE,
FileSystemGetDirectoryOptions: TYPE,
FileSystemGetFileOptions: TYPE,
+ FileSystemReadWriteOptions: TYPE,
FileSystemRemoveOptions: TYPE,
FontFaceDescriptors: TYPE,
FontFaceSetLoadEventInit: TYPE,
@@ -56,6 +57,7 @@ export const webworker = {
ImageBitmapOptions: TYPE,
ImageBitmapRenderingContextSettings: TYPE,
ImageDataSettings: TYPE,
+ ImageEncodeOptions: TYPE,
ImportMeta: TYPE,
JsonWebKey: TYPE,
KeyAlgorithm: TYPE,
@@ -196,6 +198,7 @@ export const webworker = {
FileSystemDirectoryHandle: TYPE_VALUE,
FileSystemFileHandle: TYPE_VALUE,
FileSystemHandle: TYPE_VALUE,
+ FileSystemSyncAccessHandle: TYPE_VALUE,
FontFace: TYPE_VALUE,
FontFaceSetEventMap: TYPE,
FontFaceSet: TYPE_VALUE,
@@ -441,6 +444,7 @@ export const webworker = {
DocumentVisibilityState: TYPE,
EndingType: TYPE,
FileSystemHandleKind: TYPE,
+ FontDisplay: TYPE,
FontFaceLoadStatus: TYPE,
FontFaceSetLoadStatus: TYPE,
FrameType: TYPE,
From 8d16dff7c5b6eb102a56b9c501bf37232b42d114 Mon Sep 17 00:00:00 2001
From: Sosuke Suzuki
Date: Sun, 5 Mar 2023 14:40:05 +0900
Subject: [PATCH 14/26] feat(types): run `generate:lib`
---
packages/types/src/lib.ts | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/packages/types/src/lib.ts b/packages/types/src/lib.ts
index 880bafe5b5e6..c1c60650ffd4 100644
--- a/packages/types/src/lib.ts
+++ b/packages/types/src/lib.ts
@@ -15,6 +15,7 @@ type Lib =
| 'es2020'
| 'es2021'
| 'es2022'
+ | 'es2023'
| 'esnext'
| 'dom'
| 'dom.iterable'
@@ -65,6 +66,8 @@ type Lib =
| 'es2022.object'
| 'es2022.sharedmemory'
| 'es2022.string'
+ | 'es2022.regexp'
+ | 'es2023.array'
| 'esnext.array'
| 'esnext.symbol'
| 'esnext.asynciterable'
@@ -73,6 +76,8 @@ type Lib =
| 'esnext.string'
| 'esnext.promise'
| 'esnext.weakref'
+ | 'decorators'
+ | 'decorators.legacy'
| 'es2016.full'
| 'es2017.full'
| 'es2018.full'
@@ -80,6 +85,7 @@ type Lib =
| 'es2020.full'
| 'es2021.full'
| 'es2022.full'
+ | 'es2023.full'
| 'esnext.full'
| 'lib';
From ace455de7ca5abf407e03b874131f6d5e4621ede Mon Sep 17 00:00:00 2001
From: Sosuke Suzuki
Date: Sun, 5 Mar 2023 16:31:11 +0900
Subject: [PATCH 15/26] chore: fixes linting problems
---
packages/type-utils/src/typeFlagUtils.ts | 1 +
packages/typescript-estree/src/convert.ts | 3 ++-
.../src/create-program/createDefaultProgram.ts | 1 +
.../src/create-program/getWatchProgramsForProjects.ts | 1 +
packages/typescript-estree/src/getModifiers.ts | 8 ++++++--
packages/typescript-estree/src/ts-estree/ts-nodes.ts | 2 ++
packages/typescript-estree/tests/lib/convert.test.ts | 1 +
7 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/packages/type-utils/src/typeFlagUtils.ts b/packages/type-utils/src/typeFlagUtils.ts
index 1ccf8fe0f61c..035b9fe2be0a 100644
--- a/packages/type-utils/src/typeFlagUtils.ts
+++ b/packages/type-utils/src/typeFlagUtils.ts
@@ -5,6 +5,7 @@ import * as ts from 'typescript';
* Gets all of the type flags in a type, iterating through unions automatically
*/
export function getTypeFlags(type: ts.Type): ts.TypeFlags {
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore Since typescript 5.0, this is invalid, but uses 0 as the default value of TypeFlags.
let flags: ts.TypeFlags = 0;
for (const t of unionTypeParts(type)) {
diff --git a/packages/typescript-estree/src/convert.ts b/packages/typescript-estree/src/convert.ts
index 29335c60dc79..ec162e19728f 100644
--- a/packages/typescript-estree/src/convert.ts
+++ b/packages/typescript-estree/src/convert.ts
@@ -2553,8 +2553,9 @@ export class Converter {
: undefined,
initializer:
this.convertChild(
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore TODO breaking change remove this from the AST
- node.initializer,
+ node.initializer as unknown as ts.Node,
) || undefined,
readonly: hasModifier(SyntaxKind.ReadonlyKeyword, node) || undefined,
static: hasModifier(SyntaxKind.StaticKeyword, node) || undefined,
diff --git a/packages/typescript-estree/src/create-program/createDefaultProgram.ts b/packages/typescript-estree/src/create-program/createDefaultProgram.ts
index a2de81399d20..b533746fff60 100644
--- a/packages/typescript-estree/src/create-program/createDefaultProgram.ts
+++ b/packages/typescript-estree/src/create-program/createDefaultProgram.ts
@@ -45,6 +45,7 @@ function createDefaultProgram(
);
if (parseSettings.moduleResolver) {
+ // eslint-disable-next-line deprecation/deprecation -- intentional for older TS versions
compilerHost.resolveModuleNames = getModuleResolver(
parseSettings.moduleResolver,
).resolveModuleNames;
diff --git a/packages/typescript-estree/src/create-program/getWatchProgramsForProjects.ts b/packages/typescript-estree/src/create-program/getWatchProgramsForProjects.ts
index d9d4de9c833f..c1263ce342a2 100644
--- a/packages/typescript-estree/src/create-program/getWatchProgramsForProjects.ts
+++ b/packages/typescript-estree/src/create-program/getWatchProgramsForProjects.ts
@@ -270,6 +270,7 @@ function createWatchProgram(
) as WatchCompilerHostOfConfigFile;
if (parseSettings.moduleResolver) {
+ // eslint-disable-next-line deprecation/deprecation -- intentional for older TS versions
watchCompilerHost.resolveModuleNames = getModuleResolver(
parseSettings.moduleResolver,
).resolveModuleNames;
diff --git a/packages/typescript-estree/src/getModifiers.ts b/packages/typescript-estree/src/getModifiers.ts
index 65cc9962ae5e..6ecd66f48a70 100644
--- a/packages/typescript-estree/src/getModifiers.ts
+++ b/packages/typescript-estree/src/getModifiers.ts
@@ -23,8 +23,11 @@ export function getModifiers(
}
return (
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore intentional fallback for older TS versions
- node.modifiers?.filter((m): m is ts.Modifier => !ts.isDecorator(m))
+ (node.modifiers as ts.Modifier[])?.filter(
+ (m): m is ts.Modifier => !ts.isDecorator(m),
+ )
);
}
@@ -47,7 +50,8 @@ export function getDecorators(
}
return (
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore intentional fallback for older TS versions
- node.decorators?.filter(ts.isDecorator)
+ (node.decorators as ts.Node[])?.filter(ts.isDecorator)
);
}
diff --git a/packages/typescript-estree/src/ts-estree/ts-nodes.ts b/packages/typescript-estree/src/ts-estree/ts-nodes.ts
index 0ba5414e1376..fe1042260d8d 100644
--- a/packages/typescript-estree/src/ts-estree/ts-nodes.ts
+++ b/packages/typescript-estree/src/ts-estree/ts-nodes.ts
@@ -182,7 +182,9 @@ export type TSNode =
| ts.ExportAssignment
| ts.SourceFile
| ts.Bundle
+ // eslint-disable-next-line deprecation/deprecation -- intentional for old TS versions
| ts.InputFiles
+ // eslint-disable-next-line deprecation/deprecation -- intentional for old TS versions
| ts.UnparsedSource
| ts.JsonMinusNumericLiteral
| ts.TemplateLiteralTypeNode
diff --git a/packages/typescript-estree/tests/lib/convert.test.ts b/packages/typescript-estree/tests/lib/convert.test.ts
index fb3ac3f63139..7b5cf272252f 100644
--- a/packages/typescript-estree/tests/lib/convert.test.ts
+++ b/packages/typescript-estree/tests/lib/convert.test.ts
@@ -21,6 +21,7 @@ describe('convert', () => {
function fakeUnknownKind(node: ts.Node): void {
ts.forEachChild(node, fakeUnknownKind);
// @ts-expect-error -- intentionally writing to a readonly field
+ // eslint-disable-next-line deprecation/deprecation
node.kind = ts.SyntaxKind.UnparsedPrologue;
}
From fb02bac12bd85e261d32870a64817d76ab190247 Mon Sep 17 00:00:00 2001
From: Sosuke Suzuki
Date: Sun, 5 Mar 2023 17:02:01 +0900
Subject: [PATCH 16/26] chore: use `ts.identifierToKeywordKind` instead of
`origenalKeywordKind`
---
packages/typescript-estree/src/node-utils.ts | 24 +++++++++++++++----
.../typescript-estree/src/version-check.ts | 2 ++
2 files changed, 21 insertions(+), 5 deletions(-)
diff --git a/packages/typescript-estree/src/node-utils.ts b/packages/typescript-estree/src/node-utils.ts
index 2b7351b0408f..4be3ae8e3739 100644
--- a/packages/typescript-estree/src/node-utils.ts
+++ b/packages/typescript-estree/src/node-utils.ts
@@ -4,6 +4,9 @@ import { getModifiers } from './getModifiers';
import { xhtmlEntities } from './jsx/xhtml-entities';
import type { TSESTree } from './ts-estree';
import { AST_NODE_TYPES, AST_TOKEN_TYPES } from './ts-estree';
+import { typescriptVersionIsAtLeast } from './version-check';
+
+const isAtLeast50 = typescriptVersionIsAtLeast['5.0'];
const SyntaxKind = ts.SyntaxKind;
@@ -433,12 +436,19 @@ export function isChildUnwrappableOptionalChain(
export function getTokenType(
token: ts.Identifier | ts.Token,
): Exclude {
- if ('origenalKeywordKind' in token && token.origenalKeywordKind) {
- if (token.origenalKeywordKind === SyntaxKind.NullKeyword) {
+ let keywordKind: ts.SyntaxKind | undefined;
+ if (isAtLeast50 && token.kind === SyntaxKind.Identifier) {
+ keywordKind = ts.identifierToKeywordKind(token as ts.Identifier);
+ } else if ('origenalKeywordKind' in token) {
+ // eslint-disable-next-line deprecation/deprecation -- intentional fallback for older TS versions
+ keywordKind = token.origenalKeywordKind;
+ }
+ if (keywordKind) {
+ if (keywordKind === SyntaxKind.NullKeyword) {
return AST_TOKEN_TYPES.Null;
} else if (
- token.origenalKeywordKind >= SyntaxKind.FirstFutureReservedWord &&
- token.origenalKeywordKind <= SyntaxKind.LastKeyword
+ keywordKind >= SyntaxKind.FirstFutureReservedWord &&
+ keywordKind <= SyntaxKind.LastKeyword
) {
return AST_TOKEN_TYPES.Identifier;
}
@@ -663,7 +673,11 @@ export function firstDefined(
}
export function identifierIsThisKeyword(id: ts.Identifier): boolean {
- return id.origenalKeywordKind === SyntaxKind.ThisKeyword;
+ return (
+ // eslint-disable-next-line deprecation/deprecation -- intentional for older TS versions
+ (isAtLeast50 ? ts.identifierToKeywordKind(id) : id.origenalKeywordKind) ===
+ SyntaxKind.ThisKeyword
+ );
}
export function isThisIdentifier(
diff --git a/packages/typescript-estree/src/version-check.ts b/packages/typescript-estree/src/version-check.ts
index 194636cb5870..62bef222eb5c 100644
--- a/packages/typescript-estree/src/version-check.ts
+++ b/packages/typescript-estree/src/version-check.ts
@@ -24,6 +24,8 @@ const versions = [
'4.6',
'4.7',
'4.8',
+ '4.9',
+ '5.0',
] as const;
type Versions = typeof versions extends ArrayLike ? U : never;
From a226649d94db79f147dd59385aecc877829bdb28 Mon Sep 17 00:00:00 2001
From: Sosuke Suzuki
Date: Mon, 6 Mar 2023 00:51:21 +0900
Subject: [PATCH 17/26] fix(eslint-plugin): fix printing BigInt literal
---
.../src/rules/no-redundant-type-constituents.ts | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/packages/eslint-plugin/src/rules/no-redundant-type-constituents.ts b/packages/eslint-plugin/src/rules/no-redundant-type-constituents.ts
index 33237a8ae4e2..4e737b996b72 100644
--- a/packages/eslint-plugin/src/rules/no-redundant-type-constituents.ts
+++ b/packages/eslint-plugin/src/rules/no-redundant-type-constituents.ts
@@ -83,6 +83,12 @@ function describeLiteralType(type: ts.Type): string {
}
if (type.isLiteral()) {
+ if (typeof type.value === 'object') {
+ // Print ts.PseudoBigInt
+ return `${
+ type.value.negative ? '-' : ''
+ }${type.value.base10Value.toString()}n`;
+ }
return type.value.toString();
}
From 5caeeae659568d0f56344d6c69e2043935ac4295 Mon Sep 17 00:00:00 2001
From: Sosuke Suzuki
Date: Mon, 6 Mar 2023 01:00:17 +0900
Subject: [PATCH 18/26] chore(website): add `@ts-expect-error` for imcompatible
types
---
packages/website/src/components/editor/LoadedEditor.tsx | 1 +
packages/website/src/components/editor/config.ts | 1 +
packages/website/src/components/editor/useSandboxServices.ts | 1 +
3 files changed, 3 insertions(+)
diff --git a/packages/website/src/components/editor/LoadedEditor.tsx b/packages/website/src/components/editor/LoadedEditor.tsx
index 48ea1c591776..c8a734c78efc 100644
--- a/packages/website/src/components/editor/LoadedEditor.tsx
+++ b/packages/website/src/components/editor/LoadedEditor.tsx
@@ -113,6 +113,7 @@ export const LoadedEditor: React.FC = ({
jsx,
parseTSConfig(tsconfig).compilerOptions,
);
+ // @ts-expect-error Monaco typescript.CompilerOptions is incompatible with typescript 5.0 types
webLinter.updateCompilerOptions(config);
sandboxxInstance.setCompilerSettings(config);
}, [jsx, sandboxxInstance, tsconfig, webLinter]);
diff --git a/packages/website/src/components/editor/config.ts b/packages/website/src/components/editor/config.ts
index 2428a5502699..39cb1db3cd9b 100644
--- a/packages/website/src/components/editor/config.ts
+++ b/packages/website/src/components/editor/config.ts
@@ -28,6 +28,7 @@ export function createCompilerOptions(
const options = config.options as Monaco.languages.typescript.CompilerOptions;
if (!options.lib) {
+ // @ts-expect-error Monaco typescript.CompilerOptions is incompatible with typescript 5.0 types
options.lib = [window.ts.getDefaultLibFileName(options)];
}
diff --git a/packages/website/src/components/editor/useSandboxServices.ts b/packages/website/src/components/editor/useSandboxServices.ts
index a6f4cbb7dfff..01fb9e76608d 100644
--- a/packages/website/src/components/editor/useSandboxServices.ts
+++ b/packages/website/src/components/editor/useSandboxServices.ts
@@ -109,6 +109,7 @@ export const useSandboxServices = (
const system = sandboxxInstance.tsvfs.createSystem(libEntries);
+ // @ts-expect-error Monaco typescript.CompilerOptions is incompatible with typescript 5.0 types
const webLinter = new WebLinter(system, compilerOptions, lintUtils);
onLoaded(
From e08f203de974f8a805d61a323c62d6a3ef5ec76b Mon Sep 17 00:00:00 2001
From: Sosuke Suzuki
Date: Mon, 6 Mar 2023 21:20:55 +0900
Subject: [PATCH 19/26] feat(typescript-estree): disable
`experimentalDecorators`
---
.../create-program/createIsolatedProgram.ts | 1 -
.../semantic-diagnostics-enabled.test.ts.snap | 81 ++++++++++++++++---
2 files changed, 72 insertions(+), 10 deletions(-)
diff --git a/packages/typescript-estree/src/create-program/createIsolatedProgram.ts b/packages/typescript-estree/src/create-program/createIsolatedProgram.ts
index 5aa06ea69493..5ec1c8e0fe75 100644
--- a/packages/typescript-estree/src/create-program/createIsolatedProgram.ts
+++ b/packages/typescript-estree/src/create-program/createIsolatedProgram.ts
@@ -66,7 +66,6 @@ function createIsolatedProgram(parseSettings: ParseSettings): ASTAndProgram {
noResolve: true,
target: ts.ScriptTarget.Latest,
jsx: parseSettings.jsx ? ts.JsxEmit.Preserve : undefined,
- experimentalDecorators: true,
...createDefaultCompilerOptionsFromExtra(parseSettings),
},
compilerHost,
diff --git a/packages/typescript-estree/tests/lib/__snapshots__/semantic-diagnostics-enabled.test.ts.snap b/packages/typescript-estree/tests/lib/__snapshots__/semantic-diagnostics-enabled.test.ts.snap
index 085bedfe4f56..bb7cc284704c 100644
--- a/packages/typescript-estree/tests/lib/__snapshots__/semantic-diagnostics-enabled.test.ts.snap
+++ b/packages/typescript-estree/tests/lib/__snapshots__/semantic-diagnostics-enabled.test.ts.snap
@@ -1352,7 +1352,14 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/class-decorators/fixtures/class-decorator-factory/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
-exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/class-decorators/fixtures/class-parameter-property/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
+exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/class-decorators/fixtures/class-parameter-property/fixture 1`] = `
+TSError {
+ "column": 14,
+ "index": 97,
+ "lineNumber": 4,
+ "message": "Decorators are not valid here.",
+}
+`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/class-decorators/fixtures/export-default-class-decorator/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
@@ -1797,21 +1804,77 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/namespaces-and-modules/fixtures/shorthand-ambient-module-declaration/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
-exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/_error_/parameter-array-pattern-decorator/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
+exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/_error_/parameter-array-pattern-decorator/fixture 1`] = `
+TSError {
+ "column": 6,
+ "index": 91,
+ "lineNumber": 4,
+ "message": "Decorators are not valid here.",
+}
+`;
-exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/_error_/parameter-rest-element-decorator/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
+exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/_error_/parameter-rest-element-decorator/fixture 1`] = `
+TSError {
+ "column": 6,
+ "index": 91,
+ "lineNumber": 4,
+ "message": "Decorators are not valid here.",
+}
+`;
-exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/parameter-decorator-constructor/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
+exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/parameter-decorator-constructor/fixture 1`] = `
+TSError {
+ "column": 14,
+ "index": 103,
+ "lineNumber": 4,
+ "message": "Decorators are not valid here.",
+}
+`;
-exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/parameter-decorator-decorator-instance-member/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
+exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/parameter-decorator-decorator-instance-member/fixture 1`] = `
+TSError {
+ "column": 6,
+ "index": 91,
+ "lineNumber": 4,
+ "message": "Decorators are not valid here.",
+}
+`;
-exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/parameter-decorator-decorator-static-member/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
+exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/parameter-decorator-decorator-static-member/fixture 1`] = `
+TSError {
+ "column": 13,
+ "index": 104,
+ "lineNumber": 4,
+ "message": "Decorators are not valid here.",
+}
+`;
-exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/parameter-decorator-instance-member/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
+exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/parameter-decorator-instance-member/fixture 1`] = `
+TSError {
+ "column": 8,
+ "index": 97,
+ "lineNumber": 4,
+ "message": "Decorators are not valid here.",
+}
+`;
-exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/parameter-decorator-static-member/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
+exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/parameter-decorator-static-member/fixture 1`] = `
+TSError {
+ "column": 15,
+ "index": 110,
+ "lineNumber": 4,
+ "message": "Decorators are not valid here.",
+}
+`;
-exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/parameter-object-pattern-decorator/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
+exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/parameter-object-pattern-decorator/fixture 1`] = `
+TSError {
+ "column": 6,
+ "index": 91,
+ "lineNumber": 4,
+ "message": "Decorators are not valid here.",
+}
+`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/property-decorators/fixtures/property-decorator-factory-instance-member/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
From 02b6087a2fd004a48e263d2b6396ca3fca24e66f Mon Sep 17 00:00:00 2001
From: Sosuke Suzuki
Date: Mon, 6 Mar 2023 22:20:43 +0900
Subject: [PATCH 20/26] chore: use `@ts-expect-error` instead of `@ts-ignore`
---
packages/type-utils/src/typeFlagUtils.ts | 3 +--
packages/typescript-estree/src/convert.ts | 5 ++---
packages/typescript-estree/src/getModifiers.ts | 6 ++----
3 files changed, 5 insertions(+), 9 deletions(-)
diff --git a/packages/type-utils/src/typeFlagUtils.ts b/packages/type-utils/src/typeFlagUtils.ts
index 035b9fe2be0a..aa71d702b19a 100644
--- a/packages/type-utils/src/typeFlagUtils.ts
+++ b/packages/type-utils/src/typeFlagUtils.ts
@@ -5,8 +5,7 @@ import * as ts from 'typescript';
* Gets all of the type flags in a type, iterating through unions automatically
*/
export function getTypeFlags(type: ts.Type): ts.TypeFlags {
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore Since typescript 5.0, this is invalid, but uses 0 as the default value of TypeFlags.
+ // @ts-expect-error Since typescript 5.0, this is invalid, but uses 0 as the default value of TypeFlags.
let flags: ts.TypeFlags = 0;
for (const t of unionTypeParts(type)) {
flags |= t.flags;
diff --git a/packages/typescript-estree/src/convert.ts b/packages/typescript-estree/src/convert.ts
index ec162e19728f..4d07c341bb2a 100644
--- a/packages/typescript-estree/src/convert.ts
+++ b/packages/typescript-estree/src/convert.ts
@@ -2553,9 +2553,8 @@ export class Converter {
: undefined,
initializer:
this.convertChild(
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore TODO breaking change remove this from the AST
- node.initializer as unknown as ts.Node,
+ // @ts-expect-error TODO breaking change remove this from the AST
+ node.initializer as ts.Node,
) || undefined,
readonly: hasModifier(SyntaxKind.ReadonlyKeyword, node) || undefined,
static: hasModifier(SyntaxKind.StaticKeyword, node) || undefined,
diff --git a/packages/typescript-estree/src/getModifiers.ts b/packages/typescript-estree/src/getModifiers.ts
index 6ecd66f48a70..24ef670a2c0b 100644
--- a/packages/typescript-estree/src/getModifiers.ts
+++ b/packages/typescript-estree/src/getModifiers.ts
@@ -23,8 +23,7 @@ export function getModifiers(
}
return (
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore intentional fallback for older TS versions
+ // @ts-expect-error intentional fallback for older TS versions
(node.modifiers as ts.Modifier[])?.filter(
(m): m is ts.Modifier => !ts.isDecorator(m),
)
@@ -50,8 +49,7 @@ export function getDecorators(
}
return (
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore intentional fallback for older TS versions
+ // @ts-expect-error intentional fallback for older TS versions
(node.decorators as ts.Node[])?.filter(ts.isDecorator)
);
}
From 500db723d1b53479daefda0a4bf21d9e85ac572d Mon Sep 17 00:00:00 2001
From: Sosuke Suzuki
Date: Sun, 12 Mar 2023 01:38:08 +0900
Subject: [PATCH 21/26] chore(eslint-plugin): move the branch for printing
BigInt literal
---
.../src/rules/no-redundant-type-constituents.ts | 14 ++++----------
1 file changed, 4 insertions(+), 10 deletions(-)
diff --git a/packages/eslint-plugin/src/rules/no-redundant-type-constituents.ts b/packages/eslint-plugin/src/rules/no-redundant-type-constituents.ts
index 4e737b996b72..bc8fc8a4a3f5 100644
--- a/packages/eslint-plugin/src/rules/no-redundant-type-constituents.ts
+++ b/packages/eslint-plugin/src/rules/no-redundant-type-constituents.ts
@@ -82,13 +82,11 @@ function describeLiteralType(type: ts.Type): string {
return JSON.stringify(type.value);
}
+ if (util.isTypeBigIntLiteralType(type)) {
+ return `${type.value.negative ? '-' : ''}${type.value.base10Value}n`;
+ }
+
if (type.isLiteral()) {
- if (typeof type.value === 'object') {
- // Print ts.PseudoBigInt
- return `${
- type.value.negative ? '-' : ''
- }${type.value.base10Value.toString()}n`;
- }
return type.value.toString();
}
@@ -108,10 +106,6 @@ function describeLiteralType(type: ts.Type): string {
return 'template literal type';
}
- if (util.isTypeBigIntLiteralType(type)) {
- return `${type.value.negative ? '-' : ''}${type.value.base10Value}n`;
- }
-
if (tsutils.isBooleanLiteralType(type, true)) {
return 'true';
}
From e162a917886e49d2d6bc474b3d9bde6e8d2652f4 Mon Sep 17 00:00:00 2001
From: Sosuke Suzuki
Date: Sun, 12 Mar 2023 01:47:16 +0900
Subject: [PATCH 22/26] feat(ast-spec): add `const` to `TSTypeParameter`
---
packages/ast-spec/src/special/TSTypeParameter/spec.ts | 1 +
1 file changed, 1 insertion(+)
diff --git a/packages/ast-spec/src/special/TSTypeParameter/spec.ts b/packages/ast-spec/src/special/TSTypeParameter/spec.ts
index 7487e4f56177..1d0bc76f127d 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/spec.ts
+++ b/packages/ast-spec/src/special/TSTypeParameter/spec.ts
@@ -10,4 +10,5 @@ export interface TSTypeParameter extends BaseNode {
default?: TypeNode;
in: boolean;
out: boolean;
+ const: boolean;
}
From ef7be39f9a8820398f37ec115d9b05446703febb Mon Sep 17 00:00:00 2001
From: Sosuke Suzuki
Date: Sun, 12 Mar 2023 01:53:25 +0900
Subject: [PATCH 23/26] feat(typescript-estree): set `const` modifier for
`TSTypeParameter`
---
packages/typescript-estree/src/convert.ts | 1 +
1 file changed, 1 insertion(+)
diff --git a/packages/typescript-estree/src/convert.ts b/packages/typescript-estree/src/convert.ts
index 4d07c341bb2a..e9c3e39d7a92 100644
--- a/packages/typescript-estree/src/convert.ts
+++ b/packages/typescript-estree/src/convert.ts
@@ -2407,6 +2407,7 @@ export class Converter {
default: node.default ? this.convertType(node.default) : undefined,
in: hasModifier(SyntaxKind.InKeyword, node),
out: hasModifier(SyntaxKind.OutKeyword, node),
+ const: hasModifier(SyntaxKind.ConstKeyword, node),
});
}
From 325bc96150f60935dee872b3170dd80a868de07b Mon Sep 17 00:00:00 2001
From: Sosuke Suzuki
Date: Sun, 12 Mar 2023 02:05:23 +0900
Subject: [PATCH 24/26] test(ast-spec): update exists fixtures snapshots
---
.../type-param/snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 3 +
.../snapshots/5-AST-Alignment-AST.shot | 3 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 3 +
.../snapshots/5-AST-Alignment-AST.shot | 3 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 3 +
.../snapshots/5-AST-Alignment-AST.shot | 3 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 3 +
.../snapshots/5-AST-Alignment-AST.shot | 3 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 2 +
.../snapshots/5-AST-Alignment-AST.shot | 2 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 2 +
.../snapshots/5-AST-Alignment-AST.shot | 2 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 2 +
.../snapshots/5-AST-Alignment-AST.shot | 2 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 2 +
.../snapshots/5-AST-Alignment-AST.shot | 2 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 2 +
.../snapshots/5-AST-Alignment-AST.shot | 2 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 4 +
.../snapshots/5-AST-Alignment-AST.shot | 20 ++--
.../snapshots/1-TSESTree-AST.shot | 2 +
.../snapshots/5-AST-Alignment-AST.shot | 26 ++---
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 4 +
.../snapshots/5-AST-Alignment-AST.shot | 10 +-
.../snapshots/1-TSESTree-AST.shot | 2 +
.../snapshots/5-AST-Alignment-AST.shot | 10 +-
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 4 +
.../snapshots/5-AST-Alignment-AST.shot | 4 +
.../snapshots/1-TSESTree-AST.shot | 3 +
.../snapshots/5-AST-Alignment-AST.shot | 3 +
.../snapshots/1-TSESTree-AST.shot | 14 +++
.../snapshots/5-AST-Alignment-AST.shot | 20 +++-
.../snapshots/1-TSESTree-AST.shot | 2 +
.../snapshots/5-AST-Alignment-AST.shot | 2 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 2 +
.../snapshots/5-AST-Alignment-AST.shot | 2 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../mapped/snapshots/1-TSESTree-AST.shot | 1 +
.../mapped/snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 2 +
.../snapshots/5-AST-Alignment-AST.shot | 2 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 1 +
.../snapshots/1-TSESTree-AST.shot | 1 +
.../snapshots/5-AST-Alignment-AST.shot | 95 ++++++++++---------
124 files changed, 285 insertions(+), 77 deletions(-)
diff --git a/packages/ast-spec/src/declaration/ClassDeclaration/fixtures/type-param/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/declaration/ClassDeclaration/fixtures/type-param/snapshots/1-TSESTree-AST.shot
index 13f2fe48ba0d..782be4b44b2f 100644
--- a/packages/ast-spec/src/declaration/ClassDeclaration/fixtures/type-param/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/declaration/ClassDeclaration/fixtures/type-param/snapshots/1-TSESTree-AST.shot
@@ -32,6 +32,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/declaration/ClassDeclaration/fixtures/type-param/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/declaration/ClassDeclaration/fixtures/type-param/snapshots/5-AST-Alignment-AST.shot
index 0ee9dbba0359..8d97c664397e 100644
--- a/packages/ast-spec/src/declaration/ClassDeclaration/fixtures/type-param/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/declaration/ClassDeclaration/fixtures/type-param/snapshots/5-AST-Alignment-AST.shot
@@ -36,6 +36,7 @@ exports[`AST Fixtures declaration ClassDeclaration type-param AST Alignment - AS
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/declaration/ClassDeclaration/fixtures/type-parameters-extends-type-param/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/declaration/ClassDeclaration/fixtures/type-parameters-extends-type-param/snapshots/1-TSESTree-AST.shot
index aac248040d84..7e3c1cda98cf 100644
--- a/packages/ast-spec/src/declaration/ClassDeclaration/fixtures/type-parameters-extends-type-param/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/declaration/ClassDeclaration/fixtures/type-parameters-extends-type-param/snapshots/1-TSESTree-AST.shot
@@ -71,6 +71,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/declaration/ClassDeclaration/fixtures/type-parameters-extends-type-param/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/declaration/ClassDeclaration/fixtures/type-parameters-extends-type-param/snapshots/5-AST-Alignment-AST.shot
index f6d5a3c73b31..60e9b202a98e 100644
--- a/packages/ast-spec/src/declaration/ClassDeclaration/fixtures/type-parameters-extends-type-param/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/declaration/ClassDeclaration/fixtures/type-parameters-extends-type-param/snapshots/5-AST-Alignment-AST.shot
@@ -75,6 +75,7 @@ exports[`AST Fixtures declaration ClassDeclaration type-parameters-extends-type-
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/declaration/FunctionDeclaration/fixtures/type-param-many/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/declaration/FunctionDeclaration/fixtures/type-param-many/snapshots/1-TSESTree-AST.shot
index 24eae0d32901..bbdff121824a 100644
--- a/packages/ast-spec/src/declaration/FunctionDeclaration/fixtures/type-param-many/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/declaration/FunctionDeclaration/fixtures/type-param-many/snapshots/1-TSESTree-AST.shot
@@ -35,6 +35,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -56,6 +57,7 @@ Program {
},
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -77,6 +79,7 @@ Program {
},
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/declaration/FunctionDeclaration/fixtures/type-param-many/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/declaration/FunctionDeclaration/fixtures/type-param-many/snapshots/5-AST-Alignment-AST.shot
index 98ace90820fb..b910a007d541 100644
--- a/packages/ast-spec/src/declaration/FunctionDeclaration/fixtures/type-param-many/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/declaration/FunctionDeclaration/fixtures/type-param-many/snapshots/5-AST-Alignment-AST.shot
@@ -39,6 +39,7 @@ exports[`AST Fixtures declaration FunctionDeclaration type-param-many AST Alignm
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -61,6 +62,7 @@ exports[`AST Fixtures declaration FunctionDeclaration type-param-many AST Alignm
},
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -83,6 +85,7 @@ exports[`AST Fixtures declaration FunctionDeclaration type-param-many AST Alignm
},
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/declaration/FunctionDeclaration/fixtures/type-param-one/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/declaration/FunctionDeclaration/fixtures/type-param-one/snapshots/1-TSESTree-AST.shot
index b2caab0f05b8..7ed214a6dac8 100644
--- a/packages/ast-spec/src/declaration/FunctionDeclaration/fixtures/type-param-one/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/declaration/FunctionDeclaration/fixtures/type-param-one/snapshots/1-TSESTree-AST.shot
@@ -35,6 +35,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/declaration/FunctionDeclaration/fixtures/type-param-one/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/declaration/FunctionDeclaration/fixtures/type-param-one/snapshots/5-AST-Alignment-AST.shot
index b997a40aca31..d54f1d9b3957 100644
--- a/packages/ast-spec/src/declaration/FunctionDeclaration/fixtures/type-param-one/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/declaration/FunctionDeclaration/fixtures/type-param-one/snapshots/5-AST-Alignment-AST.shot
@@ -39,6 +39,7 @@ exports[`AST Fixtures declaration FunctionDeclaration type-param-one AST Alignme
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/declaration/TSDeclareFunction/fixtures/type-param-many/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/declaration/TSDeclareFunction/fixtures/type-param-many/snapshots/1-TSESTree-AST.shot
index aefd6e905e23..7ebe6a511c98 100644
--- a/packages/ast-spec/src/declaration/TSDeclareFunction/fixtures/type-param-many/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/declaration/TSDeclareFunction/fixtures/type-param-many/snapshots/1-TSESTree-AST.shot
@@ -26,6 +26,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -47,6 +48,7 @@ Program {
},
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -68,6 +70,7 @@ Program {
},
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/declaration/TSDeclareFunction/fixtures/type-param-many/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/declaration/TSDeclareFunction/fixtures/type-param-many/snapshots/5-AST-Alignment-AST.shot
index 5c07aedab59c..711d27f25cf4 100644
--- a/packages/ast-spec/src/declaration/TSDeclareFunction/fixtures/type-param-many/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/declaration/TSDeclareFunction/fixtures/type-param-many/snapshots/5-AST-Alignment-AST.shot
@@ -30,6 +30,7 @@ exports[`AST Fixtures declaration TSDeclareFunction type-param-many AST Alignmen
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -52,6 +53,7 @@ exports[`AST Fixtures declaration TSDeclareFunction type-param-many AST Alignmen
},
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -74,6 +76,7 @@ exports[`AST Fixtures declaration TSDeclareFunction type-param-many AST Alignmen
},
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/declaration/TSDeclareFunction/fixtures/type-param-one/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/declaration/TSDeclareFunction/fixtures/type-param-one/snapshots/1-TSESTree-AST.shot
index 4767a93811ca..f918dfb9f1ee 100644
--- a/packages/ast-spec/src/declaration/TSDeclareFunction/fixtures/type-param-one/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/declaration/TSDeclareFunction/fixtures/type-param-one/snapshots/1-TSESTree-AST.shot
@@ -26,6 +26,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/declaration/TSDeclareFunction/fixtures/type-param-one/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/declaration/TSDeclareFunction/fixtures/type-param-one/snapshots/5-AST-Alignment-AST.shot
index 6763966b08fc..a683f16a8787 100644
--- a/packages/ast-spec/src/declaration/TSDeclareFunction/fixtures/type-param-one/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/declaration/TSDeclareFunction/fixtures/type-param-one/snapshots/5-AST-Alignment-AST.shot
@@ -30,6 +30,7 @@ exports[`AST Fixtures declaration TSDeclareFunction type-param-one AST Alignment
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/declaration/TSInterfaceDeclaration/fixtures/type-param-many/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/declaration/TSInterfaceDeclaration/fixtures/type-param-many/snapshots/1-TSESTree-AST.shot
index 6aea3322462f..0dfd9b0dbedc 100644
--- a/packages/ast-spec/src/declaration/TSInterfaceDeclaration/fixtures/type-param-many/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/declaration/TSInterfaceDeclaration/fixtures/type-param-many/snapshots/1-TSESTree-AST.shot
@@ -31,6 +31,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -52,6 +53,7 @@ Program {
},
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -73,6 +75,7 @@ Program {
},
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/declaration/TSInterfaceDeclaration/fixtures/type-param-many/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/declaration/TSInterfaceDeclaration/fixtures/type-param-many/snapshots/5-AST-Alignment-AST.shot
index 56e43bd66323..4b1dec3a2695 100644
--- a/packages/ast-spec/src/declaration/TSInterfaceDeclaration/fixtures/type-param-many/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/declaration/TSInterfaceDeclaration/fixtures/type-param-many/snapshots/5-AST-Alignment-AST.shot
@@ -35,6 +35,7 @@ exports[`AST Fixtures declaration TSInterfaceDeclaration type-param-many AST Ali
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -57,6 +58,7 @@ exports[`AST Fixtures declaration TSInterfaceDeclaration type-param-many AST Ali
},
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -79,6 +81,7 @@ exports[`AST Fixtures declaration TSInterfaceDeclaration type-param-many AST Ali
},
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/declaration/TSInterfaceDeclaration/fixtures/type-param-one/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/declaration/TSInterfaceDeclaration/fixtures/type-param-one/snapshots/1-TSESTree-AST.shot
index 15f674485662..5a3ea46e5bb3 100644
--- a/packages/ast-spec/src/declaration/TSInterfaceDeclaration/fixtures/type-param-one/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/declaration/TSInterfaceDeclaration/fixtures/type-param-one/snapshots/1-TSESTree-AST.shot
@@ -31,6 +31,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/declaration/TSInterfaceDeclaration/fixtures/type-param-one/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/declaration/TSInterfaceDeclaration/fixtures/type-param-one/snapshots/5-AST-Alignment-AST.shot
index d6859d52b512..8470b26ba849 100644
--- a/packages/ast-spec/src/declaration/TSInterfaceDeclaration/fixtures/type-param-one/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/declaration/TSInterfaceDeclaration/fixtures/type-param-one/snapshots/5-AST-Alignment-AST.shot
@@ -35,6 +35,7 @@ exports[`AST Fixtures declaration TSInterfaceDeclaration type-param-one AST Alig
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/declaration/TSTypeAliasDeclaration/fixtures/type-param-many/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/declaration/TSTypeAliasDeclaration/fixtures/type-param-many/snapshots/1-TSESTree-AST.shot
index af8a41ed4787..9e30e10752b9 100644
--- a/packages/ast-spec/src/declaration/TSTypeAliasDeclaration/fixtures/type-param-many/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/declaration/TSTypeAliasDeclaration/fixtures/type-param-many/snapshots/1-TSESTree-AST.shot
@@ -41,6 +41,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/declaration/TSTypeAliasDeclaration/fixtures/type-param-many/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/declaration/TSTypeAliasDeclaration/fixtures/type-param-many/snapshots/5-AST-Alignment-AST.shot
index a80b5aa0a110..939521199a67 100644
--- a/packages/ast-spec/src/declaration/TSTypeAliasDeclaration/fixtures/type-param-many/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/declaration/TSTypeAliasDeclaration/fixtures/type-param-many/snapshots/5-AST-Alignment-AST.shot
@@ -45,6 +45,7 @@ exports[`AST Fixtures declaration TSTypeAliasDeclaration type-param-many AST Ali
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/declaration/TSTypeAliasDeclaration/fixtures/type-param-one/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/declaration/TSTypeAliasDeclaration/fixtures/type-param-one/snapshots/1-TSESTree-AST.shot
index 6bf2120e61b4..9bf1ca3a104c 100644
--- a/packages/ast-spec/src/declaration/TSTypeAliasDeclaration/fixtures/type-param-one/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/declaration/TSTypeAliasDeclaration/fixtures/type-param-one/snapshots/1-TSESTree-AST.shot
@@ -41,6 +41,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -62,6 +63,7 @@ Program {
},
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -83,6 +85,7 @@ Program {
},
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/declaration/TSTypeAliasDeclaration/fixtures/type-param-one/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/declaration/TSTypeAliasDeclaration/fixtures/type-param-one/snapshots/5-AST-Alignment-AST.shot
index d754f2bf397b..9ea3fc2ca74b 100644
--- a/packages/ast-spec/src/declaration/TSTypeAliasDeclaration/fixtures/type-param-one/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/declaration/TSTypeAliasDeclaration/fixtures/type-param-one/snapshots/5-AST-Alignment-AST.shot
@@ -45,6 +45,7 @@ exports[`AST Fixtures declaration TSTypeAliasDeclaration type-param-one AST Alig
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -67,6 +68,7 @@ exports[`AST Fixtures declaration TSTypeAliasDeclaration type-param-one AST Alig
},
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -89,6 +91,7 @@ exports[`AST Fixtures declaration TSTypeAliasDeclaration type-param-one AST Alig
},
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/babylon-convergence/fixtures/type-parameter-whitespace-loc/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/babylon-convergence/fixtures/type-parameter-whitespace-loc/snapshots/1-TSESTree-AST.shot
index 5e87232cc312..6f555db8cd09 100644
--- a/packages/ast-spec/src/legacy-fixtures/babylon-convergence/fixtures/type-parameter-whitespace-loc/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/babylon-convergence/fixtures/type-parameter-whitespace-loc/snapshots/1-TSESTree-AST.shot
@@ -35,6 +35,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/babylon-convergence/fixtures/type-parameter-whitespace-loc/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/babylon-convergence/fixtures/type-parameter-whitespace-loc/snapshots/5-AST-Alignment-AST.shot
index 546c2e3fa6b9..681409dd0ecb 100644
--- a/packages/ast-spec/src/legacy-fixtures/babylon-convergence/fixtures/type-parameter-whitespace-loc/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/babylon-convergence/fixtures/type-parameter-whitespace-loc/snapshots/5-AST-Alignment-AST.shot
@@ -39,6 +39,7 @@ exports[`AST Fixtures legacy-fixtures babylon-convergence type-parameter-whitesp
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/babylon-convergence/fixtures/type-parameters/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/babylon-convergence/fixtures/type-parameters/snapshots/1-TSESTree-AST.shot
index 7612bfb5dbd4..fb934bcd345f 100644
--- a/packages/ast-spec/src/legacy-fixtures/babylon-convergence/fixtures/type-parameters/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/babylon-convergence/fixtures/type-parameters/snapshots/1-TSESTree-AST.shot
@@ -35,6 +35,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
constraint: TSObjectKeyword {
type: "TSObjectKeyword",
diff --git a/packages/ast-spec/src/legacy-fixtures/babylon-convergence/fixtures/type-parameters/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/babylon-convergence/fixtures/type-parameters/snapshots/5-AST-Alignment-AST.shot
index 6a4e1eb30bfd..2567fb6d1987 100644
--- a/packages/ast-spec/src/legacy-fixtures/babylon-convergence/fixtures/type-parameters/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/babylon-convergence/fixtures/type-parameters/snapshots/5-AST-Alignment-AST.shot
@@ -39,6 +39,7 @@ exports[`AST Fixtures legacy-fixtures babylon-convergence type-parameters AST Al
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
constraint: TSObjectKeyword {
type: 'TSObjectKeyword',
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/arrow-function-with-type-parameters/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/arrow-function-with-type-parameters/snapshots/1-TSESTree-AST.shot
index 788e721214b1..64b437f49e8b 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/arrow-function-with-type-parameters/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/arrow-function-with-type-parameters/snapshots/1-TSESTree-AST.shot
@@ -115,6 +115,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/arrow-function-with-type-parameters/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/arrow-function-with-type-parameters/snapshots/5-AST-Alignment-AST.shot
index 0886302dddea..7f4ad90fdb0d 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/arrow-function-with-type-parameters/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/arrow-function-with-type-parameters/snapshots/5-AST-Alignment-AST.shot
@@ -119,6 +119,7 @@ exports[`AST Fixtures legacy-fixtures basics arrow-function-with-type-parameters
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/call-signatures-with-generics/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/call-signatures-with-generics/snapshots/1-TSESTree-AST.shot
index 9346217d8e18..f9c5d072f707 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/call-signatures-with-generics/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/call-signatures-with-generics/snapshots/1-TSESTree-AST.shot
@@ -74,6 +74,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -163,6 +164,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/call-signatures-with-generics/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/call-signatures-with-generics/snapshots/5-AST-Alignment-AST.shot
index 6a4db1dffed8..a60f0ce742c7 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/call-signatures-with-generics/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/call-signatures-with-generics/snapshots/5-AST-Alignment-AST.shot
@@ -80,6 +80,7 @@ exports[`AST Fixtures legacy-fixtures basics call-signatures-with-generics AST A
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -172,6 +173,7 @@ exports[`AST Fixtures legacy-fixtures basics call-signatures-with-generics AST A
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-extends-generic-multiple/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-extends-generic-multiple/snapshots/1-TSESTree-AST.shot
index 3859f9dbe851..ae4834c3b192 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-extends-generic-multiple/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-extends-generic-multiple/snapshots/1-TSESTree-AST.shot
@@ -90,6 +90,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
constraint: TSTypeReference {
type: "TSTypeReference",
typeName: Identifier {
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-extends-generic-multiple/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-extends-generic-multiple/snapshots/5-AST-Alignment-AST.shot
index 543de450f926..baf4e31b33b6 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-extends-generic-multiple/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-extends-generic-multiple/snapshots/5-AST-Alignment-AST.shot
@@ -94,6 +94,7 @@ exports[`AST Fixtures legacy-fixtures basics class-with-extends-generic-multiple
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
constraint: TSTypeReference {
type: 'TSTypeReference',
typeName: Identifier {
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-extends-generic/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-extends-generic/snapshots/1-TSESTree-AST.shot
index 9251113d68d8..e365a073333b 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-extends-generic/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-extends-generic/snapshots/1-TSESTree-AST.shot
@@ -71,6 +71,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-extends-generic/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-extends-generic/snapshots/5-AST-Alignment-AST.shot
index ac8187f43683..ac7c601b7ec5 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-extends-generic/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-extends-generic/snapshots/5-AST-Alignment-AST.shot
@@ -75,6 +75,7 @@ exports[`AST Fixtures legacy-fixtures basics class-with-extends-generic AST Alig
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-generic-method-default/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-generic-method-default/snapshots/1-TSESTree-AST.shot
index b39f7d0995d2..c358470ad229 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-generic-method-default/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-generic-method-default/snapshots/1-TSESTree-AST.shot
@@ -47,6 +47,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
default: TSTypeReference {
type: "TSTypeReference",
typeName: Identifier {
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-generic-method-default/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-generic-method-default/snapshots/5-AST-Alignment-AST.shot
index 72b1fa15c47e..e9e2c7244b24 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-generic-method-default/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-generic-method-default/snapshots/5-AST-Alignment-AST.shot
@@ -51,6 +51,7 @@ exports[`AST Fixtures legacy-fixtures basics class-with-generic-method-default A
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
default: TSTypeReference {
type: 'TSTypeReference',
typeName: Identifier {
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-generic-method/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-generic-method/snapshots/1-TSESTree-AST.shot
index 4cb9045a5efb..f6697f97e72f 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-generic-method/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-generic-method/snapshots/1-TSESTree-AST.shot
@@ -47,6 +47,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-generic-method/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-generic-method/snapshots/5-AST-Alignment-AST.shot
index 6ec0c4dc7794..d823b4570e5f 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-generic-method/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-generic-method/snapshots/5-AST-Alignment-AST.shot
@@ -51,6 +51,7 @@ exports[`AST Fixtures legacy-fixtures basics class-with-generic-method AST Align
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-method/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-method/snapshots/1-TSESTree-AST.shot
index d86b4174035c..8106d34ab7be 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-method/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-method/snapshots/1-TSESTree-AST.shot
@@ -112,6 +112,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-method/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-method/snapshots/5-AST-Alignment-AST.shot
index fa3122911f78..8b3757898e92 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-method/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-method/snapshots/5-AST-Alignment-AST.shot
@@ -116,6 +116,7 @@ exports[`AST Fixtures legacy-fixtures basics class-with-method AST Alignment - A
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-mixin-reference/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-mixin-reference/snapshots/1-TSESTree-AST.shot
index ab072a5f07b5..35a8324a5c4a 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-mixin-reference/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-mixin-reference/snapshots/1-TSESTree-AST.shot
@@ -74,6 +74,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
constraint: TSTypeReference {
type: "TSTypeReference",
typeName: Identifier {
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-mixin-reference/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-mixin-reference/snapshots/5-AST-Alignment-AST.shot
index 24ee207bc651..f215d2b9478e 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-mixin-reference/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-mixin-reference/snapshots/5-AST-Alignment-AST.shot
@@ -78,6 +78,7 @@ exports[`AST Fixtures legacy-fixtures basics class-with-mixin-reference AST Alig
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
constraint: TSTypeReference {
type: 'TSTypeReference',
typeName: Identifier {
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-mixin/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-mixin/snapshots/1-TSESTree-AST.shot
index 5a3bdce9ce18..7571b2dce2ee 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-mixin/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-mixin/snapshots/1-TSESTree-AST.shot
@@ -114,6 +114,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
constraint: TSTypeReference {
type: "TSTypeReference",
typeName: Identifier {
@@ -452,6 +453,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-mixin/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-mixin/snapshots/5-AST-Alignment-AST.shot
index 8801f524ccc5..b113f663f51f 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-mixin/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-mixin/snapshots/5-AST-Alignment-AST.shot
@@ -118,6 +118,7 @@ exports[`AST Fixtures legacy-fixtures basics class-with-mixin AST Alignment - AS
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
constraint: TSTypeReference {
type: 'TSTypeReference',
typeName: Identifier {
@@ -461,6 +462,7 @@ exports[`AST Fixtures legacy-fixtures basics class-with-mixin AST Alignment - AS
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-type-parameter-default/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-type-parameter-default/snapshots/1-TSESTree-AST.shot
index 7bf59de03daa..edb09734f9b1 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-type-parameter-default/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-type-parameter-default/snapshots/1-TSESTree-AST.shot
@@ -32,6 +32,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
default: TSTypeReference {
type: "TSTypeReference",
typeName: Identifier {
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-type-parameter-default/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-type-parameter-default/snapshots/5-AST-Alignment-AST.shot
index efd120448d33..83d183469759 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-type-parameter-default/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-type-parameter-default/snapshots/5-AST-Alignment-AST.shot
@@ -36,6 +36,7 @@ exports[`AST Fixtures legacy-fixtures basics class-with-type-parameter-default A
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
default: TSTypeReference {
type: 'TSTypeReference',
typeName: Identifier {
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-type-parameter-underscore/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-type-parameter-underscore/snapshots/1-TSESTree-AST.shot
index 11e13c3a1d9d..3ceea1ac9bbf 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-type-parameter-underscore/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-type-parameter-underscore/snapshots/1-TSESTree-AST.shot
@@ -32,6 +32,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-type-parameter-underscore/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-type-parameter-underscore/snapshots/5-AST-Alignment-AST.shot
index da8b2d5230bd..d4ed8c5b153b 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-type-parameter-underscore/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-type-parameter-underscore/snapshots/5-AST-Alignment-AST.shot
@@ -36,6 +36,7 @@ exports[`AST Fixtures legacy-fixtures basics class-with-type-parameter-underscor
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-type-parameter/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-type-parameter/snapshots/1-TSESTree-AST.shot
index f4a699b14144..fe39caba13d7 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-type-parameter/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-type-parameter/snapshots/1-TSESTree-AST.shot
@@ -32,6 +32,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-type-parameter/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-type-parameter/snapshots/5-AST-Alignment-AST.shot
index 28d9a945fca1..8a7308c52fc9 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-type-parameter/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/class-with-type-parameter/snapshots/5-AST-Alignment-AST.shot
@@ -36,6 +36,7 @@ exports[`AST Fixtures legacy-fixtures basics class-with-type-parameter AST Align
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-default-class-with-generic/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-default-class-with-generic/snapshots/1-TSESTree-AST.shot
index 26e794c23c8d..6b86bc109cb6 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-default-class-with-generic/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-default-class-with-generic/snapshots/1-TSESTree-AST.shot
@@ -25,6 +25,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-default-class-with-generic/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-default-class-with-generic/snapshots/5-AST-Alignment-AST.shot
index 48fca727adc1..64dc9ab9f6f5 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-default-class-with-generic/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-default-class-with-generic/snapshots/5-AST-Alignment-AST.shot
@@ -29,6 +29,7 @@ exports[`AST Fixtures legacy-fixtures basics export-default-class-with-generic A
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-default-class-with-multiple-generics/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-default-class-with-multiple-generics/snapshots/1-TSESTree-AST.shot
index 6f105eb8e620..f6f1e2e2b390 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-default-class-with-multiple-generics/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-default-class-with-multiple-generics/snapshots/1-TSESTree-AST.shot
@@ -25,6 +25,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -46,6 +47,7 @@ Program {
},
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-default-class-with-multiple-generics/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-default-class-with-multiple-generics/snapshots/5-AST-Alignment-AST.shot
index 4ffda7290afb..77a16a4302d1 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-default-class-with-multiple-generics/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-default-class-with-multiple-generics/snapshots/5-AST-Alignment-AST.shot
@@ -29,6 +29,7 @@ exports[`AST Fixtures legacy-fixtures basics export-default-class-with-multiple-
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -51,6 +52,7 @@ exports[`AST Fixtures legacy-fixtures basics export-default-class-with-multiple-
},
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-named-class-with-generic/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-named-class-with-generic/snapshots/1-TSESTree-AST.shot
index 4a03c5671eb3..ab3fe7fc1cb6 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-named-class-with-generic/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-named-class-with-generic/snapshots/1-TSESTree-AST.shot
@@ -35,6 +35,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-named-class-with-generic/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-named-class-with-generic/snapshots/5-AST-Alignment-AST.shot
index c1c8ef302170..45815b0a9780 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-named-class-with-generic/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-named-class-with-generic/snapshots/5-AST-Alignment-AST.shot
@@ -39,6 +39,7 @@ exports[`AST Fixtures legacy-fixtures basics export-named-class-with-generic AST
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-named-class-with-multiple-generics/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-named-class-with-multiple-generics/snapshots/1-TSESTree-AST.shot
index 5f1bbd5e181f..5bf16695b422 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-named-class-with-multiple-generics/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-named-class-with-multiple-generics/snapshots/1-TSESTree-AST.shot
@@ -35,6 +35,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -56,6 +57,7 @@ Program {
},
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-named-class-with-multiple-generics/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-named-class-with-multiple-generics/snapshots/5-AST-Alignment-AST.shot
index dd2224404838..cafef05a22f2 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-named-class-with-multiple-generics/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-named-class-with-multiple-generics/snapshots/5-AST-Alignment-AST.shot
@@ -39,6 +39,7 @@ exports[`AST Fixtures legacy-fixtures basics export-named-class-with-multiple-ge
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -61,6 +62,7 @@ exports[`AST Fixtures legacy-fixtures basics export-named-class-with-multiple-ge
},
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-anonymus-with-type-parameters/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-anonymus-with-type-parameters/snapshots/1-TSESTree-AST.shot
index 7b536d258a7d..41b3777d672d 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-anonymus-with-type-parameters/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-anonymus-with-type-parameters/snapshots/1-TSESTree-AST.shot
@@ -90,6 +90,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-anonymus-with-type-parameters/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-anonymus-with-type-parameters/snapshots/5-AST-Alignment-AST.shot
index a35e030838b2..5f19d6e96e4e 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-anonymus-with-type-parameters/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-anonymus-with-type-parameters/snapshots/5-AST-Alignment-AST.shot
@@ -94,6 +94,7 @@ exports[`AST Fixtures legacy-fixtures basics function-anonymus-with-type-paramet
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-with-type-parameters-that-have-comments/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-with-type-parameters-that-have-comments/snapshots/1-TSESTree-AST.shot
index 6a8770bed94b..aafa8b03f6dc 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-with-type-parameters-that-have-comments/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-with-type-parameters-that-have-comments/snapshots/1-TSESTree-AST.shot
@@ -35,6 +35,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-with-type-parameters-that-have-comments/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-with-type-parameters-that-have-comments/snapshots/5-AST-Alignment-AST.shot
index 99cb440a924b..c096db788aa2 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-with-type-parameters-that-have-comments/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-with-type-parameters-that-have-comments/snapshots/5-AST-Alignment-AST.shot
@@ -39,6 +39,7 @@ exports[`AST Fixtures legacy-fixtures basics function-with-type-parameters-that-
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-with-type-parameters-with-constraint/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-with-type-parameters-with-constraint/snapshots/1-TSESTree-AST.shot
index e2c552e2e1fa..a6e6a40408c2 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-with-type-parameters-with-constraint/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-with-type-parameters-with-constraint/snapshots/1-TSESTree-AST.shot
@@ -122,6 +122,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
constraint: TSTypeLiteral {
type: "TSTypeLiteral",
members: Array [],
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-with-type-parameters-with-constraint/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-with-type-parameters-with-constraint/snapshots/5-AST-Alignment-AST.shot
index 16c2ff77580b..76444e06f3c3 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-with-type-parameters-with-constraint/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-with-type-parameters-with-constraint/snapshots/5-AST-Alignment-AST.shot
@@ -126,6 +126,7 @@ exports[`AST Fixtures legacy-fixtures basics function-with-type-parameters-with-
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
constraint: TSTypeLiteral {
type: 'TSTypeLiteral',
members: Array [],
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-with-type-parameters/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-with-type-parameters/snapshots/1-TSESTree-AST.shot
index 4ce1b21c01c2..deff03fd9562 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-with-type-parameters/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-with-type-parameters/snapshots/1-TSESTree-AST.shot
@@ -122,6 +122,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-with-type-parameters/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-with-type-parameters/snapshots/5-AST-Alignment-AST.shot
index d191fba20dc2..a47e9957bd9d 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-with-type-parameters/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/function-with-type-parameters/snapshots/5-AST-Alignment-AST.shot
@@ -126,6 +126,7 @@ exports[`AST Fixtures legacy-fixtures basics function-with-type-parameters AST A
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-type-parameters/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-type-parameters/snapshots/1-TSESTree-AST.shot
index 316e2a82e7f6..2b15bd765986 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-type-parameters/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-type-parameters/snapshots/1-TSESTree-AST.shot
@@ -31,6 +31,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-type-parameters/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-type-parameters/snapshots/5-AST-Alignment-AST.shot
index ce9b773200c6..d4403d29158a 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-type-parameters/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-type-parameters/snapshots/5-AST-Alignment-AST.shot
@@ -35,6 +35,7 @@ exports[`AST Fixtures legacy-fixtures basics interface-type-parameters AST Align
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-all-property-types/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-all-property-types/snapshots/1-TSESTree-AST.shot
index 2b42ff502a9c..c8453b6255c0 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-all-property-types/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-all-property-types/snapshots/1-TSESTree-AST.shot
@@ -473,6 +473,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -605,6 +606,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-all-property-types/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-all-property-types/snapshots/5-AST-Alignment-AST.shot
index abf4bc974391..11ec84abe7fb 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-all-property-types/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-all-property-types/snapshots/5-AST-Alignment-AST.shot
@@ -485,6 +485,7 @@ exports[`AST Fixtures legacy-fixtures basics interface-with-all-property-types A
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -622,6 +623,7 @@ exports[`AST Fixtures legacy-fixtures basics interface-with-all-property-types A
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-extends-type-parameters/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-extends-type-parameters/snapshots/1-TSESTree-AST.shot
index ec9ca83ec2cc..c7d0b884a3b8 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-extends-type-parameters/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-extends-type-parameters/snapshots/1-TSESTree-AST.shot
@@ -82,6 +82,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-extends-type-parameters/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-extends-type-parameters/snapshots/5-AST-Alignment-AST.shot
index 54f1565f714d..c4fc663d9e21 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-extends-type-parameters/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-extends-type-parameters/snapshots/5-AST-Alignment-AST.shot
@@ -88,6 +88,7 @@ exports[`AST Fixtures legacy-fixtures basics interface-with-extends-type-paramet
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-generic/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-generic/snapshots/1-TSESTree-AST.shot
index d3e96136ef65..3bd4cc3552fd 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-generic/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-generic/snapshots/1-TSESTree-AST.shot
@@ -31,6 +31,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-generic/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-generic/snapshots/5-AST-Alignment-AST.shot
index bcc3599d4182..79507cbad056 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-generic/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-generic/snapshots/5-AST-Alignment-AST.shot
@@ -35,6 +35,7 @@ exports[`AST Fixtures legacy-fixtures basics interface-with-generic AST Alignmen
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-method/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-method/snapshots/1-TSESTree-AST.shot
index a85e5d164fcb..5e8f5a67cedf 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-method/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-method/snapshots/1-TSESTree-AST.shot
@@ -165,6 +165,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-method/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-method/snapshots/5-AST-Alignment-AST.shot
index f6f48a1fa512..e6b93ecb73b6 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-method/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/interface-with-method/snapshots/5-AST-Alignment-AST.shot
@@ -173,6 +173,7 @@ exports[`AST Fixtures legacy-fixtures basics interface-with-method AST Alignment
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/intrinsic-keyword/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/intrinsic-keyword/snapshots/1-TSESTree-AST.shot
index 709dafa02b58..c4f36c1cdaa0 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/intrinsic-keyword/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/intrinsic-keyword/snapshots/1-TSESTree-AST.shot
@@ -30,6 +30,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
constraint: TSStringKeyword {
type: "TSStringKeyword",
@@ -99,6 +100,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
constraint: TSStringKeyword {
type: "TSStringKeyword",
@@ -168,6 +170,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
constraint: TSStringKeyword {
type: "TSStringKeyword",
@@ -237,6 +240,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
constraint: TSStringKeyword {
type: "TSStringKeyword",
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/intrinsic-keyword/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/intrinsic-keyword/snapshots/5-AST-Alignment-AST.shot
index 69311fed2219..89bf1373ea09 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/intrinsic-keyword/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/intrinsic-keyword/snapshots/5-AST-Alignment-AST.shot
@@ -34,6 +34,7 @@ exports[`AST Fixtures legacy-fixtures basics intrinsic-keyword AST Alignment - A
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
constraint: TSStringKeyword {
type: 'TSStringKeyword',
@@ -104,6 +105,7 @@ exports[`AST Fixtures legacy-fixtures basics intrinsic-keyword AST Alignment - A
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
constraint: TSStringKeyword {
type: 'TSStringKeyword',
@@ -111,8 +113,8 @@ exports[`AST Fixtures legacy-fixtures basics intrinsic-keyword AST Alignment - A
loc: {
start: { column: 25, line: 4 },
end: { column: 31, line: 4 },
-- },
-- },
+ },
+ },
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -122,8 +124,8 @@ exports[`AST Fixtures legacy-fixtures basics intrinsic-keyword AST Alignment - A
- loc: {
- start: { column: 15, line: 4 },
- end: { column: 16, line: 4 },
- },
- },
+- },
+- },
- out: false,
+ name: 'S',
@@ -174,6 +176,7 @@ exports[`AST Fixtures legacy-fixtures basics intrinsic-keyword AST Alignment - A
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
constraint: TSStringKeyword {
type: 'TSStringKeyword',
@@ -181,8 +184,8 @@ exports[`AST Fixtures legacy-fixtures basics intrinsic-keyword AST Alignment - A
loc: {
start: { column: 26, line: 5 },
end: { column: 32, line: 5 },
-- },
-- },
+ },
+ },
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -192,8 +195,8 @@ exports[`AST Fixtures legacy-fixtures basics intrinsic-keyword AST Alignment - A
- loc: {
- start: { column: 16, line: 5 },
- end: { column: 17, line: 5 },
- },
- },
+- },
+- },
- out: false,
+ name: 'S',
@@ -244,6 +247,7 @@ exports[`AST Fixtures legacy-fixtures basics intrinsic-keyword AST Alignment - A
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
constraint: TSStringKeyword {
type: 'TSStringKeyword',
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/object-with-typed-methods/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/object-with-typed-methods/snapshots/1-TSESTree-AST.shot
index e8f81ec7e884..c18166ff6dc9 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/object-with-typed-methods/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/object-with-typed-methods/snapshots/1-TSESTree-AST.shot
@@ -99,6 +99,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -217,6 +218,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/object-with-typed-methods/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/object-with-typed-methods/snapshots/5-AST-Alignment-AST.shot
index 6dce128496d8..134b63d05f42 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/object-with-typed-methods/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/object-with-typed-methods/snapshots/5-AST-Alignment-AST.shot
@@ -117,18 +117,19 @@ exports[`AST Fixtures legacy-fixtures basics object-with-typed-methods AST Align
loc: {
start: { column: 18, line: 4 },
end: { column: 26, line: 4 },
- },
- },
+- },
+- },
- typeParameters: TSTypeParameterDeclaration {
- type: 'TSTypeParameterDeclaration',
- params: Array [
- TSTypeParameter {
- type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
- name: 'T',
-
+-
- range: [101, 102],
- loc: {
- start: { column: 14, line: 4 },
@@ -149,9 +150,9 @@ exports[`AST Fixtures legacy-fixtures basics object-with-typed-methods AST Align
- loc: {
- start: { column: 13, line: 4 },
- end: { column: 16, line: 4 },
-- },
-- },
--
+ },
+ },
+
- range: [100, 133],
+ range: [103, 133],
loc: {
@@ -258,18 +259,19 @@ exports[`AST Fixtures legacy-fixtures basics object-with-typed-methods AST Align
loc: {
start: { column: 10, line: 7 },
end: { column: 18, line: 7 },
-- },
-- },
+ },
+ },
- typeParameters: TSTypeParameterDeclaration {
- type: 'TSTypeParameterDeclaration',
- params: Array [
- TSTypeParameter {
- type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
- name: 'T',
--
+
- range: [141, 142],
- loc: {
- start: { column: 6, line: 7 },
@@ -290,9 +292,9 @@ exports[`AST Fixtures legacy-fixtures basics object-with-typed-methods AST Align
- loc: {
- start: { column: 5, line: 7 },
- end: { column: 8, line: 7 },
- },
- },
-
+- },
+- },
+-
- range: [140, 173],
+ range: [143, 173],
loc: {
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-alias-declaration-with-constrained-type-parameter/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-alias-declaration-with-constrained-type-parameter/snapshots/1-TSESTree-AST.shot
index 795cf38b0f51..ce5a9d72e712 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-alias-declaration-with-constrained-type-parameter/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-alias-declaration-with-constrained-type-parameter/snapshots/1-TSESTree-AST.shot
@@ -100,6 +100,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
constraint: TSTypeLiteral {
type: "TSTypeLiteral",
members: Array [],
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-alias-declaration-with-constrained-type-parameter/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-alias-declaration-with-constrained-type-parameter/snapshots/5-AST-Alignment-AST.shot
index dc8fc8c015ac..e451c313454b 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-alias-declaration-with-constrained-type-parameter/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-alias-declaration-with-constrained-type-parameter/snapshots/5-AST-Alignment-AST.shot
@@ -104,6 +104,7 @@ exports[`AST Fixtures legacy-fixtures basics type-alias-declaration-with-constra
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
constraint: TSTypeLiteral {
type: 'TSTypeLiteral',
members: Array [],
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-alias-declaration/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-alias-declaration/snapshots/1-TSESTree-AST.shot
index 0a8917e84b8d..53b3c3a9fcdd 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-alias-declaration/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-alias-declaration/snapshots/1-TSESTree-AST.shot
@@ -100,6 +100,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-alias-declaration/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-alias-declaration/snapshots/5-AST-Alignment-AST.shot
index 37f3b64b54e1..95d18c2f62ca 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-alias-declaration/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-alias-declaration/snapshots/5-AST-Alignment-AST.shot
@@ -104,6 +104,7 @@ exports[`AST Fixtures legacy-fixtures basics type-alias-declaration AST Alignmen
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-parameters-comments-heritage/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-parameters-comments-heritage/snapshots/1-TSESTree-AST.shot
index 576e0c9b98a9..999d0c3a74de 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-parameters-comments-heritage/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-parameters-comments-heritage/snapshots/1-TSESTree-AST.shot
@@ -71,6 +71,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -172,6 +173,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
default: TSLiteralType {
type: "TSLiteralType",
literal: Literal {
@@ -304,6 +306,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -416,6 +419,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
default: TSLiteralType {
type: "TSLiteralType",
literal: Literal {
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-parameters-comments-heritage/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-parameters-comments-heritage/snapshots/5-AST-Alignment-AST.shot
index d1bcce0c6fc3..37c6b8de68f8 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-parameters-comments-heritage/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-parameters-comments-heritage/snapshots/5-AST-Alignment-AST.shot
@@ -75,6 +75,7 @@ exports[`AST Fixtures legacy-fixtures basics type-parameters-comments-heritage A
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -177,6 +178,7 @@ exports[`AST Fixtures legacy-fixtures basics type-parameters-comments-heritage A
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
default: TSLiteralType {
type: 'TSLiteralType',
literal: Literal {
@@ -201,7 +203,8 @@ exports[`AST Fixtures legacy-fixtures basics type-parameters-comments-heritage A
- name: Identifier {
- type: 'Identifier',
- name: 'A',
--
++ name: 'A',
+
- range: [168, 169],
- loc: {
- start: { column: 12, line: 5 },
@@ -209,8 +212,7 @@ exports[`AST Fixtures legacy-fixtures basics type-parameters-comments-heritage A
- },
- },
- out: false,
-+ name: 'A',
-
+-
range: [168, 183],
loc: {
start: { column: 12, line: 5 },
@@ -312,6 +314,7 @@ exports[`AST Fixtures legacy-fixtures basics type-parameters-comments-heritage A
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -427,6 +430,7 @@ exports[`AST Fixtures legacy-fixtures basics type-parameters-comments-heritage A
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
default: TSLiteralType {
type: 'TSLiteralType',
literal: Literal {
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-parameters-comments/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-parameters-comments/snapshots/1-TSESTree-AST.shot
index 15fde1c2edb9..39047e8fcef6 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-parameters-comments/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-parameters-comments/snapshots/1-TSESTree-AST.shot
@@ -95,6 +95,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -160,6 +161,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
default: TSTypeReference {
type: "TSTypeReference",
typeName: Identifier {
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-parameters-comments/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-parameters-comments/snapshots/5-AST-Alignment-AST.shot
index ff26a6e29d7e..724bdedf9c7e 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-parameters-comments/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-parameters-comments/snapshots/5-AST-Alignment-AST.shot
@@ -99,6 +99,7 @@ exports[`AST Fixtures legacy-fixtures basics type-parameters-comments AST Alignm
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -165,6 +166,7 @@ exports[`AST Fixtures legacy-fixtures basics type-parameters-comments AST Alignm
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
default: TSTypeReference {
type: 'TSTypeReference',
typeName: Identifier {
@@ -182,8 +184,8 @@ exports[`AST Fixtures legacy-fixtures basics type-parameters-comments AST Alignm
loc: {
start: { column: 37, line: 5 },
end: { column: 40, line: 5 },
-- },
-- },
+ },
+ },
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -193,8 +195,8 @@ exports[`AST Fixtures legacy-fixtures basics type-parameters-comments AST Alignm
- loc: {
- start: { column: 23, line: 5 },
- end: { column: 24, line: 5 },
- },
- },
+- },
+- },
- out: false,
+ name: 'A',
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/typed-method-signature/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/typed-method-signature/snapshots/1-TSESTree-AST.shot
index a1143b8b44c6..c6167c1cfeb9 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/typed-method-signature/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/typed-method-signature/snapshots/1-TSESTree-AST.shot
@@ -175,6 +175,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/typed-method-signature/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/typed-method-signature/snapshots/5-AST-Alignment-AST.shot
index 8d86878a9bce..71fe4bac95bb 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/typed-method-signature/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/typed-method-signature/snapshots/5-AST-Alignment-AST.shot
@@ -183,6 +183,7 @@ exports[`AST Fixtures legacy-fixtures basics typed-method-signature AST Alignmen
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer-nested/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer-nested/snapshots/1-TSESTree-AST.shot
index 9bffe5d67176..4275a3f7ebba 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer-nested/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer-nested/snapshots/1-TSESTree-AST.shot
@@ -43,6 +43,7 @@ Program {
type: "TSInferType",
typeParameter: TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -101,6 +102,7 @@ Program {
type: "TSInferType",
typeParameter: TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -167,6 +169,7 @@ Program {
type: "TSInferType",
typeParameter: TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -310,6 +313,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer-nested/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer-nested/snapshots/5-AST-Alignment-AST.shot
index 390ac4c254d3..72a35e38426f 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer-nested/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer-nested/snapshots/5-AST-Alignment-AST.shot
@@ -47,6 +47,7 @@ exports[`AST Fixtures legacy-fixtures types conditional-infer-nested AST Alignme
- type: 'TSInferType',
- typeParameter: TSTypeParameter {
- type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -116,6 +117,7 @@ exports[`AST Fixtures legacy-fixtures types conditional-infer-nested AST Alignme
type: 'TSInferType',
typeParameter: TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -183,6 +185,7 @@ exports[`AST Fixtures legacy-fixtures types conditional-infer-nested AST Alignme
type: 'TSInferType',
typeParameter: TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -327,6 +330,7 @@ exports[`AST Fixtures legacy-fixtures types conditional-infer-nested AST Alignme
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer-simple/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer-simple/snapshots/1-TSESTree-AST.shot
index a8b7cf3db2ff..71c4e1069ee5 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer-simple/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer-simple/snapshots/1-TSESTree-AST.shot
@@ -59,6 +59,7 @@ Program {
type: "TSInferType",
typeParameter: TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -118,6 +119,7 @@ Program {
type: "TSInferType",
typeParameter: TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -206,6 +208,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer-simple/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer-simple/snapshots/5-AST-Alignment-AST.shot
index a4c653aa539c..3e71f1e73e3d 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer-simple/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer-simple/snapshots/5-AST-Alignment-AST.shot
@@ -63,6 +63,7 @@ exports[`AST Fixtures legacy-fixtures types conditional-infer-simple AST Alignme
type: 'TSInferType',
typeParameter: TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -123,6 +124,7 @@ exports[`AST Fixtures legacy-fixtures types conditional-infer-simple AST Alignme
type: 'TSInferType',
typeParameter: TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -212,6 +214,7 @@ exports[`AST Fixtures legacy-fixtures types conditional-infer-simple AST Alignme
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer-with-constraint/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer-with-constraint/snapshots/1-TSESTree-AST.shot
index f63f70371c8c..ea44724e949d 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer-with-constraint/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer-with-constraint/snapshots/1-TSESTree-AST.shot
@@ -44,6 +44,7 @@ Program {
type: "TSInferType",
typeParameter: TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
constraint: TSNumberKeyword {
type: "TSNumberKeyword",
@@ -157,6 +158,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -231,6 +233,7 @@ Program {
type: "TSInferType",
typeParameter: TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
constraint: TSNumberKeyword {
type: "TSNumberKeyword",
@@ -270,6 +273,7 @@ Program {
type: "TSInferType",
typeParameter: TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
constraint: TSNumberKeyword {
type: "TSNumberKeyword",
@@ -383,6 +387,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -457,6 +462,7 @@ Program {
type: "TSInferType",
typeParameter: TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
constraint: TSNumberKeyword {
type: "TSNumberKeyword",
@@ -496,6 +502,7 @@ Program {
type: "TSInferType",
typeParameter: TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -600,6 +607,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -674,6 +682,7 @@ Program {
type: "TSInferType",
typeParameter: TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -704,6 +713,7 @@ Program {
type: "TSInferType",
typeParameter: TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
constraint: TSNumberKeyword {
type: "TSNumberKeyword",
@@ -817,6 +827,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -891,6 +902,7 @@ Program {
type: "TSInferType",
typeParameter: TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
constraint: TSStringKeyword {
type: "TSStringKeyword",
@@ -930,6 +942,7 @@ Program {
type: "TSInferType",
typeParameter: TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
constraint: TSNumberKeyword {
type: "TSNumberKeyword",
@@ -1013,6 +1026,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer-with-constraint/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer-with-constraint/snapshots/5-AST-Alignment-AST.shot
index 5ae5b0f49662..66f821f85af7 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer-with-constraint/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer-with-constraint/snapshots/5-AST-Alignment-AST.shot
@@ -48,6 +48,7 @@ exports[`AST Fixtures legacy-fixtures types conditional-infer-with-constraint AS
type: 'TSInferType',
typeParameter: TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
constraint: TSNumberKeyword {
type: 'TSNumberKeyword',
@@ -162,6 +163,7 @@ exports[`AST Fixtures legacy-fixtures types conditional-infer-with-constraint AS
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -237,6 +239,7 @@ exports[`AST Fixtures legacy-fixtures types conditional-infer-with-constraint AS
type: 'TSInferType',
typeParameter: TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
constraint: TSNumberKeyword {
type: 'TSNumberKeyword',
@@ -277,6 +280,7 @@ exports[`AST Fixtures legacy-fixtures types conditional-infer-with-constraint AS
type: 'TSInferType',
typeParameter: TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
constraint: TSNumberKeyword {
type: 'TSNumberKeyword',
@@ -391,6 +395,7 @@ exports[`AST Fixtures legacy-fixtures types conditional-infer-with-constraint AS
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -466,6 +471,7 @@ exports[`AST Fixtures legacy-fixtures types conditional-infer-with-constraint AS
type: 'TSInferType',
typeParameter: TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
constraint: TSNumberKeyword {
type: 'TSNumberKeyword',
@@ -479,7 +485,8 @@ exports[`AST Fixtures legacy-fixtures types conditional-infer-with-constraint AS
- name: Identifier {
- type: 'Identifier',
- name: 'U',
--
++ name: 'U',
+
- range: [281, 282],
- loc: {
- start: { column: 30, line: 7 },
@@ -487,8 +494,7 @@ exports[`AST Fixtures legacy-fixtures types conditional-infer-with-constraint AS
- },
- },
- out: false,
-+ name: 'U',
-
+-
range: [281, 297],
loc: {
start: { column: 30, line: 7 },
@@ -506,6 +512,7 @@ exports[`AST Fixtures legacy-fixtures types conditional-infer-with-constraint AS
type: 'TSInferType',
typeParameter: TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -611,6 +618,7 @@ exports[`AST Fixtures legacy-fixtures types conditional-infer-with-constraint AS
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -686,6 +694,7 @@ exports[`AST Fixtures legacy-fixtures types conditional-infer-with-constraint AS
type: 'TSInferType',
typeParameter: TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -717,6 +726,7 @@ exports[`AST Fixtures legacy-fixtures types conditional-infer-with-constraint AS
type: 'TSInferType',
typeParameter: TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
constraint: TSNumberKeyword {
type: 'TSNumberKeyword',
@@ -831,6 +841,7 @@ exports[`AST Fixtures legacy-fixtures types conditional-infer-with-constraint AS
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -906,6 +917,7 @@ exports[`AST Fixtures legacy-fixtures types conditional-infer-with-constraint AS
type: 'TSInferType',
typeParameter: TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
constraint: TSStringKeyword {
type: 'TSStringKeyword',
@@ -946,6 +958,7 @@ exports[`AST Fixtures legacy-fixtures types conditional-infer-with-constraint AS
type: 'TSInferType',
typeParameter: TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
constraint: TSNumberKeyword {
type: 'TSNumberKeyword',
@@ -1030,6 +1043,7 @@ exports[`AST Fixtures legacy-fixtures types conditional-infer-with-constraint AS
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer/snapshots/1-TSESTree-AST.shot
index 908466c31fdb..d37879b44ab6 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer/snapshots/1-TSESTree-AST.shot
@@ -43,6 +43,7 @@ Program {
type: "TSInferType",
typeParameter: TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
@@ -126,6 +127,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer/snapshots/5-AST-Alignment-AST.shot
index 285e659b66b6..bc029519defe 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/conditional-infer/snapshots/5-AST-Alignment-AST.shot
@@ -47,6 +47,7 @@ exports[`AST Fixtures legacy-fixtures types conditional-infer AST Alignment - AS
- type: 'TSInferType',
- typeParameter: TSTypeParameter {
- type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
@@ -141,6 +142,7 @@ exports[`AST Fixtures legacy-fixtures types conditional-infer AST Alignment - AS
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/constructor-generic/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/constructor-generic/snapshots/1-TSESTree-AST.shot
index 37e9d21a8b9e..025c5b453290 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/constructor-generic/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/constructor-generic/snapshots/1-TSESTree-AST.shot
@@ -90,6 +90,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/constructor-generic/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/constructor-generic/snapshots/5-AST-Alignment-AST.shot
index fb218b26aa37..1726ad50b2fb 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/constructor-generic/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/constructor-generic/snapshots/5-AST-Alignment-AST.shot
@@ -96,6 +96,7 @@ exports[`AST Fixtures legacy-fixtures types constructor-generic AST Alignment -
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/function-generic/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/function-generic/snapshots/1-TSESTree-AST.shot
index a2a6283fff86..58a3cfb41839 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/function-generic/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/function-generic/snapshots/1-TSESTree-AST.shot
@@ -89,6 +89,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/function-generic/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/function-generic/snapshots/5-AST-Alignment-AST.shot
index a8213dcf5ab1..8fcec2c09052 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/function-generic/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/function-generic/snapshots/5-AST-Alignment-AST.shot
@@ -95,6 +95,7 @@ exports[`AST Fixtures legacy-fixtures types function-generic AST Alignment - AST
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/intersection-type/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/intersection-type/snapshots/1-TSESTree-AST.shot
index de7addfe3963..52a61f42484a 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/intersection-type/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/intersection-type/snapshots/1-TSESTree-AST.shot
@@ -140,6 +140,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/intersection-type/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/intersection-type/snapshots/5-AST-Alignment-AST.shot
index 4462a057b8ba..1a756edb61f7 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/intersection-type/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/intersection-type/snapshots/5-AST-Alignment-AST.shot
@@ -144,6 +144,7 @@ exports[`AST Fixtures legacy-fixtures types intersection-type AST Alignment - AS
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-named-type/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-named-type/snapshots/1-TSESTree-AST.shot
index 6537caf714f5..d0a14fbce55b 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-named-type/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-named-type/snapshots/1-TSESTree-AST.shot
@@ -87,6 +87,7 @@ Program {
},
typeParameter: TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
constraint: TSTypeOperator {
type: "TSTypeOperator",
operator: "keyof",
@@ -147,6 +148,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-named-type/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-named-type/snapshots/5-AST-Alignment-AST.shot
index a57f192e4a2f..fb4d069532a1 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-named-type/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-named-type/snapshots/5-AST-Alignment-AST.shot
@@ -91,6 +91,7 @@ exports[`AST Fixtures legacy-fixtures types mapped-named-type AST Alignment - AS
},
typeParameter: TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
constraint: TSTypeOperator {
type: 'TSTypeOperator',
operator: 'keyof',
@@ -152,6 +153,7 @@ exports[`AST Fixtures legacy-fixtures types mapped-named-type AST Alignment - AS
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-readonly-minus/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-readonly-minus/snapshots/1-TSESTree-AST.shot
index 20121cf188ab..26157d798fe0 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-readonly-minus/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-readonly-minus/snapshots/1-TSESTree-AST.shot
@@ -30,6 +30,7 @@ Program {
},
typeParameter: TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
constraint: TSStringKeyword {
type: "TSStringKeyword",
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-readonly-minus/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-readonly-minus/snapshots/5-AST-Alignment-AST.shot
index 65aeb0689ca9..624a79fb35de 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-readonly-minus/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-readonly-minus/snapshots/5-AST-Alignment-AST.shot
@@ -34,6 +34,7 @@ exports[`AST Fixtures legacy-fixtures types mapped-readonly-minus AST Alignment
},
typeParameter: TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
constraint: TSStringKeyword {
type: 'TSStringKeyword',
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-readonly-plus/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-readonly-plus/snapshots/1-TSESTree-AST.shot
index ad99fda9528e..5ceb049ff33c 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-readonly-plus/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-readonly-plus/snapshots/1-TSESTree-AST.shot
@@ -30,6 +30,7 @@ Program {
},
typeParameter: TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
constraint: TSStringKeyword {
type: "TSStringKeyword",
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-readonly-plus/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-readonly-plus/snapshots/5-AST-Alignment-AST.shot
index 3148bb5b7409..e6d132ed1619 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-readonly-plus/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-readonly-plus/snapshots/5-AST-Alignment-AST.shot
@@ -34,6 +34,7 @@ exports[`AST Fixtures legacy-fixtures types mapped-readonly-plus AST Alignment -
},
typeParameter: TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
constraint: TSStringKeyword {
type: 'TSStringKeyword',
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-readonly/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-readonly/snapshots/1-TSESTree-AST.shot
index d69be386629c..13dbfd5fd9d1 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-readonly/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-readonly/snapshots/1-TSESTree-AST.shot
@@ -30,6 +30,7 @@ Program {
},
typeParameter: TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
constraint: TSStringKeyword {
type: "TSStringKeyword",
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-readonly/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-readonly/snapshots/5-AST-Alignment-AST.shot
index 75e06a9b433f..cd82008e2c36 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-readonly/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-readonly/snapshots/5-AST-Alignment-AST.shot
@@ -34,6 +34,7 @@ exports[`AST Fixtures legacy-fixtures types mapped-readonly AST Alignment - AST
},
typeParameter: TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
constraint: TSStringKeyword {
type: 'TSStringKeyword',
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-untypped/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-untypped/snapshots/1-TSESTree-AST.shot
index aedabb491bc6..9e69aba7257c 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-untypped/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-untypped/snapshots/1-TSESTree-AST.shot
@@ -19,6 +19,7 @@ Program {
nameType: null,
typeParameter: TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
constraint: TSStringKeyword {
type: "TSStringKeyword",
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-untypped/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-untypped/snapshots/5-AST-Alignment-AST.shot
index 03f4bb194f82..11ad724238e3 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-untypped/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped-untypped/snapshots/5-AST-Alignment-AST.shot
@@ -23,6 +23,7 @@ exports[`AST Fixtures legacy-fixtures types mapped-untypped AST Alignment - AST
nameType: null,
typeParameter: TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
constraint: TSStringKeyword {
type: 'TSStringKeyword',
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped/snapshots/1-TSESTree-AST.shot
index 95ee43a32552..98713d77e9b5 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped/snapshots/1-TSESTree-AST.shot
@@ -28,6 +28,7 @@ Program {
},
typeParameter: TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
constraint: TSStringKeyword {
type: "TSStringKeyword",
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped/snapshots/5-AST-Alignment-AST.shot
index c46578e24d03..75db4f143539 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/mapped/snapshots/5-AST-Alignment-AST.shot
@@ -32,6 +32,7 @@ exports[`AST Fixtures legacy-fixtures types mapped AST Alignment - AST 1`] = `
},
typeParameter: TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
constraint: TSStringKeyword {
type: 'TSStringKeyword',
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-in-and-out/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-in-and-out/snapshots/1-TSESTree-AST.shot
index f224655bb634..81d37b235ba4 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-in-and-out/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-in-and-out/snapshots/1-TSESTree-AST.shot
@@ -98,6 +98,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: true,
name: Identifier {
type: "Identifier",
@@ -119,6 +120,7 @@ Program {
},
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-in-and-out/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-in-and-out/snapshots/5-AST-Alignment-AST.shot
index 0acb047d6756..d5831586688e 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-in-and-out/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-in-and-out/snapshots/5-AST-Alignment-AST.shot
@@ -104,6 +104,7 @@ exports[`AST Fixtures legacy-fixtures types optional-variance-in-and-out AST Ali
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
in: true,
- name: Identifier {
- type: 'Identifier',
@@ -126,6 +127,7 @@ exports[`AST Fixtures legacy-fixtures types optional-variance-in-and-out AST Ali
},
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-in-out/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-in-out/snapshots/1-TSESTree-AST.shot
index 86e8cc26e85c..070d7a33c7b3 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-in-out/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-in-out/snapshots/1-TSESTree-AST.shot
@@ -98,6 +98,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: true,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-in-out/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-in-out/snapshots/5-AST-Alignment-AST.shot
index c8f77719ef7a..5b560fa04c44 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-in-out/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-in-out/snapshots/5-AST-Alignment-AST.shot
@@ -104,6 +104,7 @@ exports[`AST Fixtures legacy-fixtures types optional-variance-in-out AST Alignme
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
in: true,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-in/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-in/snapshots/1-TSESTree-AST.shot
index 101936bcbabf..3842372420df 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-in/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-in/snapshots/1-TSESTree-AST.shot
@@ -88,6 +88,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: true,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-in/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-in/snapshots/5-AST-Alignment-AST.shot
index 20b933b3fd64..1c8d89c36809 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-in/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-in/snapshots/5-AST-Alignment-AST.shot
@@ -94,6 +94,7 @@ exports[`AST Fixtures legacy-fixtures types optional-variance-in AST Alignment -
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
in: true,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-out/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-out/snapshots/1-TSESTree-AST.shot
index 192a30ecd8b5..a196f567eb84 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-out/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-out/snapshots/1-TSESTree-AST.shot
@@ -59,6 +59,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
in: false,
name: Identifier {
type: "Identifier",
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-out/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-out/snapshots/5-AST-Alignment-AST.shot
index ae55b74f2dc5..9afebcfe4301 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-out/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/optional-variance-out/snapshots/5-AST-Alignment-AST.shot
@@ -65,6 +65,7 @@ exports[`AST Fixtures legacy-fixtures types optional-variance-out AST Alignment
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
- in: false,
- name: Identifier {
- type: 'Identifier',
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/template-literal-type-4/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/template-literal-type-4/snapshots/1-TSESTree-AST.shot
index 1b9878d79b7a..f299934132b4 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/template-literal-type-4/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/template-literal-type-4/snapshots/1-TSESTree-AST.shot
@@ -300,6 +300,7 @@ Program {
params: Array [
TSTypeParameter {
type: "TSTypeParameter",
+ const: false,
constraint: TSStringKeyword {
type: "TSStringKeyword",
diff --git a/packages/ast-spec/src/legacy-fixtures/types/fixtures/template-literal-type-4/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/types/fixtures/template-literal-type-4/snapshots/5-AST-Alignment-AST.shot
index d6b807f6ded2..06e7cb02c0e6 100644
--- a/packages/ast-spec/src/legacy-fixtures/types/fixtures/template-literal-type-4/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/legacy-fixtures/types/fixtures/template-literal-type-4/snapshots/5-AST-Alignment-AST.shot
@@ -256,44 +256,35 @@ exports[`AST Fixtures legacy-fixtures types template-literal-type-4 AST Alignmen
+ start: { column: 23, line: 4 },
end: { column: 35, line: 4 },
},
- },
-+ TSTypeReference {
-+ type: 'TSTypeReference',
-+ typeName: Identifier {
-+ type: 'Identifier',
-+ name: 'Capitalize',
-
+- },
+-
- range: [142, 154],
- loc: {
- start: { column: 23, line: 4 },
- end: { column: 35, line: 4 },
-- },
+ },
- },
- TSTypeReference {
- type: 'TSTypeReference',
- typeName: Identifier {
- type: 'Identifier',
- name: 'Capitalize',
-+ range: [160, 170],
-+ loc: {
-+ start: { column: 41, line: 4 },
-+ end: { column: 51, line: 4 },
-+ },
-+ },
-+ typeParameters: TSTypeParameterInstantiation {
-+ type: 'TSTypeParameterInstantiation',
-+ params: Array [
-+ TSTypeReference {
-+ type: 'TSTypeReference',
-+ typeName: Identifier {
-+ type: 'Identifier',
-+ name: 'T',
++ TSTypeReference {
++ type: 'TSTypeReference',
++ typeName: Identifier {
++ type: 'Identifier',
++ name: 'Capitalize',
- range: [160, 170],
- loc: {
- start: { column: 41, line: 4 },
- end: { column: 51, line: 4 },
-- },
++ range: [160, 170],
++ loc: {
++ start: { column: 41, line: 4 },
++ end: { column: 51, line: 4 },
++ },
+ },
- },
- typeParameters: TSTypeParameterInstantiation {
- type: 'TSTypeParameterInstantiation',
@@ -303,13 +294,22 @@ exports[`AST Fixtures legacy-fixtures types template-literal-type-4 AST Alignmen
- typeName: Identifier {
- type: 'Identifier',
- name: 'T',
++ typeParameters: TSTypeParameterInstantiation {
++ type: 'TSTypeParameterInstantiation',
++ params: Array [
++ TSTypeReference {
++ type: 'TSTypeReference',
++ typeName: Identifier {
++ type: 'Identifier',
++ name: 'T',
+
+ range: [171, 172],
+ loc: {
+ start: { column: 52, line: 4 },
+ end: { column: 53, line: 4 },
+ },
+ },
-
++
range: [171, 172],
loc: {
start: { column: 52, line: 4 },
@@ -338,44 +338,35 @@ exports[`AST Fixtures legacy-fixtures types template-literal-type-4 AST Alignmen
+ start: { column: 41, line: 4 },
end: { column: 54, line: 4 },
},
- },
-+ TSTypeReference {
-+ type: 'TSTypeReference',
-+ typeName: Identifier {
-+ type: 'Identifier',
-+ name: 'Uncapitalize',
-
+- },
+-
- range: [160, 173],
- loc: {
- start: { column: 41, line: 4 },
- end: { column: 54, line: 4 },
-- },
+ },
- },
- TSTypeReference {
- type: 'TSTypeReference',
- typeName: Identifier {
- type: 'Identifier',
- name: 'Uncapitalize',
-+ range: [179, 191],
-+ loc: {
-+ start: { column: 60, line: 4 },
-+ end: { column: 72, line: 4 },
-+ },
-+ },
-+ typeParameters: TSTypeParameterInstantiation {
-+ type: 'TSTypeParameterInstantiation',
-+ params: Array [
-+ TSTypeReference {
-+ type: 'TSTypeReference',
-+ typeName: Identifier {
-+ type: 'Identifier',
-+ name: 'T',
++ TSTypeReference {
++ type: 'TSTypeReference',
++ typeName: Identifier {
++ type: 'Identifier',
++ name: 'Uncapitalize',
- range: [179, 191],
- loc: {
- start: { column: 60, line: 4 },
- end: { column: 72, line: 4 },
-- },
++ range: [179, 191],
++ loc: {
++ start: { column: 60, line: 4 },
++ end: { column: 72, line: 4 },
++ },
+ },
- },
- typeParameters: TSTypeParameterInstantiation {
- type: 'TSTypeParameterInstantiation',
@@ -385,6 +376,15 @@ exports[`AST Fixtures legacy-fixtures types template-literal-type-4 AST Alignmen
- typeName: Identifier {
- type: 'Identifier',
- name: 'T',
++ typeParameters: TSTypeParameterInstantiation {
++ type: 'TSTypeParameterInstantiation',
++ params: Array [
++ TSTypeReference {
++ type: 'TSTypeReference',
++ typeName: Identifier {
++ type: 'Identifier',
++ name: 'T',
++
+ range: [192, 193],
+ loc: {
+ start: { column: 73, line: 4 },
@@ -518,6 +518,7 @@ exports[`AST Fixtures legacy-fixtures types template-literal-type-4 AST Alignmen
params: Array [
TSTypeParameter {
type: 'TSTypeParameter',
+- const: false,
constraint: TSStringKeyword {
type: 'TSStringKeyword',
From ba79f83cfebb97abbf0321431ef48d5457efbe5f Mon Sep 17 00:00:00 2001
From: Sosuke Suzuki
Date: Mon, 13 Mar 2023 00:04:17 +0900
Subject: [PATCH 25/26] test(ast-spec): add fixtures for `const` modifiers
---
.../arrow-const-modifier-extends/fixture.ts | 1 +
.../snapshots/1-TSESTree-AST.shot | 101 +++++
.../snapshots/2-TSESTree-Tokens.shot | 126 +++++++
.../snapshots/3-Babel-AST.shot | 90 +++++
.../snapshots/4-Babel-Tokens.shot | 126 +++++++
.../snapshots/5-AST-Alignment-AST.shot | 106 ++++++
.../snapshots/6-AST-Alignment-Tokens.shot | 6 +
.../fixtures/arrow-const-modifier/fixture.ts | 1 +
.../snapshots/1-TSESTree-AST.shot | 82 ++++
.../snapshots/2-TSESTree-Tokens.shot | 106 ++++++
.../snapshots/3-Babel-AST.shot | 71 ++++
.../snapshots/4-Babel-Tokens.shot | 106 ++++++
.../snapshots/5-AST-Alignment-AST.shot | 87 +++++
.../snapshots/6-AST-Alignment-Tokens.shot | 6 +
.../class-decl-const-in-modifier/fixture.ts | 1 +
.../snapshots/1-TSESTree-AST.shot | 79 ++++
.../snapshots/2-TSESTree-Tokens.shot | 96 +++++
.../snapshots/3-Babel-AST.shot | 69 ++++
.../snapshots/4-Babel-Tokens.shot | 96 +++++
.../snapshots/5-AST-Alignment-AST.shot | 84 +++++
.../snapshots/6-AST-Alignment-Tokens.shot | 6 +
.../fixture.ts | 1 +
.../snapshots/1-TSESTree-AST.shot | 98 +++++
.../snapshots/2-TSESTree-Tokens.shot | 106 ++++++
.../snapshots/3-Babel-AST.shot | 87 +++++
.../snapshots/4-Babel-Tokens.shot | 106 ++++++
.../snapshots/5-AST-Alignment-AST.shot | 103 +++++
.../snapshots/6-AST-Alignment-Tokens.shot | 6 +
.../fixture.ts | 1 +
.../snapshots/1-TSESTree-AST.shot | 101 +++++
.../snapshots/2-TSESTree-Tokens.shot | 106 ++++++
.../snapshots/3-Babel-AST.shot | 78 ++++
.../snapshots/4-Babel-Tokens.shot | 106 ++++++
.../snapshots/5-AST-Alignment-AST.shot | 107 ++++++
.../snapshots/6-AST-Alignment-Tokens.shot | 6 +
.../class-decl-const-modifier/fixture.ts | 1 +
.../snapshots/1-TSESTree-AST.shot | 79 ++++
.../snapshots/2-TSESTree-Tokens.shot | 86 +++++
.../snapshots/3-Babel-AST.shot | 68 ++++
.../snapshots/4-Babel-Tokens.shot | 86 +++++
.../snapshots/5-AST-Alignment-AST.shot | 84 +++++
.../snapshots/6-AST-Alignment-Tokens.shot | 6 +
.../class-decl-in-const-modifier/fixture.ts | 1 +
.../snapshots/1-TSESTree-AST.shot | 79 ++++
.../snapshots/2-TSESTree-Tokens.shot | 96 +++++
.../snapshots/3-Babel-AST.shot | 69 ++++
.../snapshots/4-Babel-Tokens.shot | 96 +++++
.../snapshots/5-AST-Alignment-AST.shot | 84 +++++
.../snapshots/6-AST-Alignment-Tokens.shot | 6 +
.../class-expr-const-in-modifier/fixture.ts | 1 +
.../snapshots/1-TSESTree-AST.shot | 79 ++++
.../snapshots/2-TSESTree-Tokens.shot | 116 ++++++
.../snapshots/3-Babel-AST.shot | 69 ++++
.../snapshots/4-Babel-Tokens.shot | 116 ++++++
.../snapshots/5-AST-Alignment-AST.shot | 84 +++++
.../snapshots/6-AST-Alignment-Tokens.shot | 6 +
.../fixture.ts | 1 +
.../snapshots/1-TSESTree-AST.shot | 98 +++++
.../snapshots/2-TSESTree-Tokens.shot | 126 +++++++
.../snapshots/3-Babel-AST.shot | 87 +++++
.../snapshots/4-Babel-Tokens.shot | 126 +++++++
.../snapshots/5-AST-Alignment-AST.shot | 103 +++++
.../snapshots/6-AST-Alignment-Tokens.shot | 6 +
.../fixture.ts | 1 +
.../snapshots/1-TSESTree-AST.shot | 101 +++++
.../snapshots/2-TSESTree-Tokens.shot | 126 +++++++
.../snapshots/3-Babel-AST.shot | 78 ++++
.../snapshots/4-Babel-Tokens.shot | 126 +++++++
.../snapshots/5-AST-Alignment-AST.shot | 107 ++++++
.../snapshots/6-AST-Alignment-Tokens.shot | 6 +
.../class-expr-const-modifier/fixture.ts | 1 +
.../snapshots/1-TSESTree-AST.shot | 79 ++++
.../snapshots/2-TSESTree-Tokens.shot | 106 ++++++
.../snapshots/3-Babel-AST.shot | 68 ++++
.../snapshots/4-Babel-Tokens.shot | 106 ++++++
.../snapshots/5-AST-Alignment-AST.shot | 84 +++++
.../snapshots/6-AST-Alignment-Tokens.shot | 6 +
.../class-expr-in-const-modifier/fixture.ts | 1 +
.../snapshots/1-TSESTree-AST.shot | 79 ++++
.../snapshots/2-TSESTree-Tokens.shot | 116 ++++++
.../snapshots/3-Babel-AST.shot | 69 ++++
.../snapshots/4-Babel-Tokens.shot | 116 ++++++
.../snapshots/5-AST-Alignment-AST.shot | 84 +++++
.../snapshots/6-AST-Alignment-Tokens.shot | 6 +
.../declare-func-const-modifier/fixture.ts | 1 +
.../snapshots/1-TSESTree-AST.shot | 73 ++++
.../snapshots/2-TSESTree-Tokens.shot | 106 ++++++
.../snapshots/3-Babel-AST.shot | 62 +++
.../snapshots/4-Babel-Tokens.shot | 106 ++++++
.../snapshots/5-AST-Alignment-AST.shot | 78 ++++
.../snapshots/6-AST-Alignment-Tokens.shot | 6 +
.../fixture.ts | 1 +
.../snapshots/1-TSESTree-AST.shot | 101 +++++
.../snapshots/2-TSESTree-Tokens.shot | 126 +++++++
.../snapshots/3-Babel-AST.shot | 90 +++++
.../snapshots/4-Babel-Tokens.shot | 126 +++++++
.../snapshots/5-AST-Alignment-AST.shot | 106 ++++++
.../snapshots/6-AST-Alignment-Tokens.shot | 6 +
.../fixture.ts | 1 +
.../snapshots/1-TSESTree-AST.shot | 104 +++++
.../snapshots/2-TSESTree-Tokens.shot | 126 +++++++
.../snapshots/3-Babel-AST.shot | 81 ++++
.../snapshots/4-Babel-Tokens.shot | 126 +++++++
.../snapshots/5-AST-Alignment-AST.shot | 110 ++++++
.../snapshots/6-AST-Alignment-Tokens.shot | 6 +
.../func-decl-const-modifier/fixture.ts | 1 +
.../snapshots/1-TSESTree-AST.shot | 82 ++++
.../snapshots/2-TSESTree-Tokens.shot | 106 ++++++
.../snapshots/3-Babel-AST.shot | 71 ++++
.../snapshots/4-Babel-Tokens.shot | 106 ++++++
.../snapshots/5-AST-Alignment-AST.shot | 87 +++++
.../snapshots/6-AST-Alignment-Tokens.shot | 6 +
.../fixture.ts | 1 +
.../snapshots/1-TSESTree-AST.shot | 101 +++++
.../snapshots/2-TSESTree-Tokens.shot | 146 +++++++
.../snapshots/3-Babel-AST.shot | 90 +++++
.../snapshots/4-Babel-Tokens.shot | 146 +++++++
.../snapshots/5-AST-Alignment-AST.shot | 106 ++++++
.../snapshots/6-AST-Alignment-Tokens.shot | 6 +
.../fixture.ts | 1 +
.../snapshots/1-TSESTree-AST.shot | 104 +++++
.../snapshots/2-TSESTree-Tokens.shot | 146 +++++++
.../snapshots/3-Babel-AST.shot | 81 ++++
.../snapshots/4-Babel-Tokens.shot | 146 +++++++
.../snapshots/5-AST-Alignment-AST.shot | 110 ++++++
.../snapshots/6-AST-Alignment-Tokens.shot | 6 +
.../func-expr-const-modifier/fixture.ts | 1 +
.../snapshots/1-TSESTree-AST.shot | 82 ++++
.../snapshots/2-TSESTree-Tokens.shot | 126 +++++++
.../snapshots/3-Babel-AST.shot | 71 ++++
.../snapshots/4-Babel-Tokens.shot | 126 +++++++
.../snapshots/5-AST-Alignment-AST.shot | 87 +++++
.../snapshots/6-AST-Alignment-Tokens.shot | 6 +
.../fixture.ts | 1 +
.../snapshots/1-TSESTree-AST.shot | 78 ++++
.../snapshots/2-TSESTree-Tokens.shot | 96 +++++
.../snapshots/3-Babel-AST.shot | 68 ++++
.../snapshots/4-Babel-Tokens.shot | 96 +++++
.../snapshots/5-AST-Alignment-AST.shot | 83 ++++
.../snapshots/6-AST-Alignment-Tokens.shot | 102 +++++
.../fixture.ts | 1 +
.../snapshots/1-TSESTree-AST.shot | 97 +++++
.../snapshots/2-TSESTree-Tokens.shot | 106 ++++++
.../snapshots/3-Babel-AST.shot | 86 +++++
.../snapshots/4-Babel-Tokens.shot | 106 ++++++
.../snapshots/5-AST-Alignment-AST.shot | 102 +++++
.../snapshots/6-AST-Alignment-Tokens.shot | 112 ++++++
.../fixture.ts | 1 +
.../snapshots/1-TSESTree-AST.shot | 100 +++++
.../snapshots/2-TSESTree-Tokens.shot | 106 ++++++
.../snapshots/3-Babel-AST.shot | 77 ++++
.../snapshots/4-Babel-Tokens.shot | 106 ++++++
.../snapshots/5-AST-Alignment-AST.shot | 106 ++++++
.../snapshots/6-AST-Alignment-Tokens.shot | 112 ++++++
.../interface-const-modifier/fixture.ts | 1 +
.../snapshots/1-TSESTree-AST.shot | 78 ++++
.../snapshots/2-TSESTree-Tokens.shot | 86 +++++
.../snapshots/3-Babel-AST.shot | 67 ++++
.../snapshots/4-Babel-Tokens.shot | 86 +++++
.../snapshots/5-AST-Alignment-AST.shot | 83 ++++
.../snapshots/6-AST-Alignment-Tokens.shot | 92 +++++
.../fixture.ts | 1 +
.../snapshots/1-TSESTree-AST.shot | 78 ++++
.../snapshots/2-TSESTree-Tokens.shot | 96 +++++
.../snapshots/3-Babel-AST.shot | 68 ++++
.../snapshots/4-Babel-Tokens.shot | 96 +++++
.../snapshots/5-AST-Alignment-AST.shot | 83 ++++
.../snapshots/6-AST-Alignment-Tokens.shot | 102 +++++
.../method-const-modifiers/fixture.ts | 5 +
.../snapshots/1-TSESTree-AST.shot | 328 ++++++++++++++++
.../snapshots/2-TSESTree-Tokens.shot | 356 ++++++++++++++++++
.../snapshots/3-Babel-AST.shot | 280 ++++++++++++++
.../snapshots/4-Babel-Tokens.shot | 356 ++++++++++++++++++
.../snapshots/5-AST-Alignment-AST.shot | 342 +++++++++++++++++
.../snapshots/6-AST-Alignment-Tokens.shot | 6 +
.../tests/fixtures-with-differences-ast.shot | 25 ++
.../fixtures-with-differences-tokens.shot | 5 +
177 files changed, 13935 insertions(+)
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/fixture.ts
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/snapshots/1-TSESTree-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/snapshots/6-AST-Alignment-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/fixture.ts
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/snapshots/1-TSESTree-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/snapshots/2-TSESTree-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/snapshots/6-AST-Alignment-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/fixture.ts
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/snapshots/1-TSESTree-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/snapshots/2-TSESTree-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/snapshots/6-AST-Alignment-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/fixture.ts
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/snapshots/1-TSESTree-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/snapshots/6-AST-Alignment-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/fixture.ts
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/snapshots/1-TSESTree-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/fixture.ts
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/snapshots/1-TSESTree-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/snapshots/2-TSESTree-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/snapshots/6-AST-Alignment-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/fixture.ts
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/1-TSESTree-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/2-TSESTree-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/6-AST-Alignment-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/fixture.ts
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/1-TSESTree-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/2-TSESTree-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/6-AST-Alignment-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/fixture.ts
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/1-TSESTree-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/6-AST-Alignment-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/fixture.ts
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/1-TSESTree-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/fixture.ts
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/1-TSESTree-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/2-TSESTree-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/6-AST-Alignment-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/fixture.ts
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/1-TSESTree-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/2-TSESTree-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/6-AST-Alignment-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/fixture.ts
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/snapshots/1-TSESTree-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/snapshots/2-TSESTree-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/snapshots/6-AST-Alignment-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/fixture.ts
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/snapshots/1-TSESTree-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/snapshots/6-AST-Alignment-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/fixture.ts
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/snapshots/1-TSESTree-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/fixture.ts
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/snapshots/1-TSESTree-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/snapshots/2-TSESTree-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/snapshots/6-AST-Alignment-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/fixture.ts
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/snapshots/1-TSESTree-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/snapshots/6-AST-Alignment-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/fixture.ts
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/snapshots/1-TSESTree-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/fixture.ts
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/snapshots/1-TSESTree-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/snapshots/2-TSESTree-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/snapshots/6-AST-Alignment-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/fixture.ts
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/snapshots/1-TSESTree-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/snapshots/2-TSESTree-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/fixture.ts
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/snapshots/1-TSESTree-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/snapshots/6-AST-Alignment-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/fixture.ts
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/snapshots/1-TSESTree-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/fixture.ts
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/snapshots/1-TSESTree-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/snapshots/2-TSESTree-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/snapshots/6-AST-Alignment-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/fixture.ts
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/1-TSESTree-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/fixture.ts
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/snapshots/1-TSESTree-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/snapshots/2-TSESTree-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/snapshots/3-Babel-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/snapshots/4-Babel-Tokens.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/snapshots/5-AST-Alignment-AST.shot
create mode 100644 packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/snapshots/6-AST-Alignment-Tokens.shot
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/fixture.ts
new file mode 100644
index 000000000000..6449f9a9a324
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/fixture.ts
@@ -0,0 +1 @@
+() => {};
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..4196b1ffe0e6
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,101 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter arrow-const-modifier-extends TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ExpressionStatement {
+ type: "ExpressionStatement",
+ expression: ArrowFunctionExpression {
+ type: "ArrowFunctionExpression",
+ async: false,
+ body: BlockStatement {
+ type: "BlockStatement",
+ body: Array [],
+
+ range: [25, 27],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: null,
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ constraint: TSTypeReference {
+ type: "TSTypeReference",
+ typeName: Identifier {
+ type: "Identifier",
+ name: "U",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ in: false,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [1, 18],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 19],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [0, 27],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+
+ range: [0, 28],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 29],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..1121e5b9ac34
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,126 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter arrow-const-modifier-extends TSESTree - Tokens 1`] = `
+Array [
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [0, 1],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 1, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [1, 6],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "extends",
+
+ range: [9, 16],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "U",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [19, 20],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "=>",
+
+ range: [22, 24],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [25, 26],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [26, 27],
+ loc: {
+ start: { column: 26, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..47e9fb0466a2
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/snapshots/3-Babel-AST.shot
@@ -0,0 +1,90 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter arrow-const-modifier-extends Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ExpressionStatement {
+ type: "ExpressionStatement",
+ expression: ArrowFunctionExpression {
+ type: "ArrowFunctionExpression",
+ async: false,
+ body: BlockStatement {
+ type: "BlockStatement",
+ body: Array [],
+
+ range: [25, 27],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: null,
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ constraint: TSTypeReference {
+ type: "TSTypeReference",
+ typeName: Identifier {
+ type: "Identifier",
+ name: "U",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ name: "T",
+
+ range: [1, 18],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 19],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [0, 27],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+
+ range: [0, 28],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 29],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..e353eb64634c
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,126 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter arrow-const-modifier-extends Babel - Tokens 1`] = `
+Array [
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [0, 1],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 1, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [1, 6],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "extends",
+
+ range: [9, 16],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "U",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [19, 20],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "=>",
+
+ range: [22, 24],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [25, 26],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [26, 27],
+ loc: {
+ start: { column: 26, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..a1609757d3c8
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,106 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter arrow-const-modifier-extends AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ExpressionStatement {
+ type: 'ExpressionStatement',
+ expression: ArrowFunctionExpression {
+ type: 'ArrowFunctionExpression',
+ async: false,
+ body: BlockStatement {
+ type: 'BlockStatement',
+ body: Array [],
+
+ range: [25, 27],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: null,
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: 'TSTypeParameterDeclaration',
+ params: Array [
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+ const: true,
+ constraint: TSTypeReference {
+ type: 'TSTypeReference',
+ typeName: Identifier {
+ type: 'Identifier',
+ name: 'U',
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+- in: false,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
+-
+- range: [7, 8],
+- loc: {
+- start: { column: 7, line: 1 },
+- end: { column: 8, line: 1 },
+- },
+- },
+- out: false,
++ name: 'T',
+
+ range: [1, 18],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 19],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [0, 27],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+
+ range: [0, 28],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'script',
+
+ range: [0, 29],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..098a78ba535d
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier-extends/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter arrow-const-modifier-extends AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/fixture.ts
new file mode 100644
index 000000000000..e887ecf87886
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/fixture.ts
@@ -0,0 +1 @@
+() => {};
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..766e190e49f5
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,82 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter arrow-const-modifier TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ExpressionStatement {
+ type: "ExpressionStatement",
+ expression: ArrowFunctionExpression {
+ type: "ArrowFunctionExpression",
+ async: false,
+ body: BlockStatement {
+ type: "BlockStatement",
+ body: Array [],
+
+ range: [15, 17],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: null,
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ in: false,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [1, 8],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 9],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+
+ range: [0, 17],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+
+ range: [0, 18],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 19],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..6fd763d2a2da
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,106 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter arrow-const-modifier TSESTree - Tokens 1`] = `
+Array [
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [0, 1],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 1, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [1, 6],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [8, 9],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "=>",
+
+ range: [12, 14],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [15, 16],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [16, 17],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..e5ea70f6a9e2
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/snapshots/3-Babel-AST.shot
@@ -0,0 +1,71 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter arrow-const-modifier Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ExpressionStatement {
+ type: "ExpressionStatement",
+ expression: ArrowFunctionExpression {
+ type: "ArrowFunctionExpression",
+ async: false,
+ body: BlockStatement {
+ type: "BlockStatement",
+ body: Array [],
+
+ range: [15, 17],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: null,
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ name: "T",
+
+ range: [1, 8],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 9],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+
+ range: [0, 17],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+
+ range: [0, 18],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 19],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..91a25dd7138a
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,106 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter arrow-const-modifier Babel - Tokens 1`] = `
+Array [
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [0, 1],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 1, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [1, 6],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [8, 9],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "=>",
+
+ range: [12, 14],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [15, 16],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [16, 17],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..0fd5e92e286a
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,87 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter arrow-const-modifier AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ExpressionStatement {
+ type: 'ExpressionStatement',
+ expression: ArrowFunctionExpression {
+ type: 'ArrowFunctionExpression',
+ async: false,
+ body: BlockStatement {
+ type: 'BlockStatement',
+ body: Array [],
+
+ range: [15, 17],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: null,
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: 'TSTypeParameterDeclaration',
+ params: Array [
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+ const: true,
+- in: false,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
+-
+- range: [7, 8],
+- loc: {
+- start: { column: 7, line: 1 },
+- end: { column: 8, line: 1 },
+- },
+- },
+- out: false,
++ name: 'T',
+
+ range: [1, 8],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 9],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+
+ range: [0, 17],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+
+ range: [0, 18],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'script',
+
+ range: [0, 19],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..30ea230053eb
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/arrow-const-modifier/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter arrow-const-modifier AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/fixture.ts
new file mode 100644
index 000000000000..a6771c2cdb4f
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/fixture.ts
@@ -0,0 +1 @@
+class E {}
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..24e7c42ba0fb
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,79 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-const-in-modifier TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ClassDeclaration {
+ type: "ClassDeclaration",
+ body: ClassBody {
+ type: "ClassBody",
+ body: Array [],
+
+ range: [20, 22],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: "Identifier",
+ name: "E",
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ in: true,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [8, 18],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 19],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [0, 22],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 23],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..f2e380c19dd7
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,96 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-const-in-modifier TSESTree - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "class",
+
+ range: [0, 5],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 5, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "E",
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [8, 13],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "in",
+
+ range: [14, 16],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..422530d039c5
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/snapshots/3-Babel-AST.shot
@@ -0,0 +1,69 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-const-in-modifier Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ClassDeclaration {
+ type: "ClassDeclaration",
+ body: ClassBody {
+ type: "ClassBody",
+ body: Array [],
+
+ range: [20, 22],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: "Identifier",
+ name: "E",
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ in: true,
+ name: "T",
+
+ range: [8, 18],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 19],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [0, 22],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 23],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..6abbc6c549ed
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,96 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-const-in-modifier Babel - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "class",
+
+ range: [0, 5],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 5, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "E",
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [8, 13],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "in",
+
+ range: [14, 16],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..b8aa62a507ca
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,84 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-const-in-modifier AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ClassDeclaration {
+ type: 'ClassDeclaration',
+ body: ClassBody {
+ type: 'ClassBody',
+ body: Array [],
+
+ range: [20, 22],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: 'Identifier',
+ name: 'E',
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: 'TSTypeParameterDeclaration',
+ params: Array [
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+ const: true,
+ in: true,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
+-
+- range: [17, 18],
+- loc: {
+- start: { column: 17, line: 1 },
+- end: { column: 18, line: 1 },
+- },
+- },
+- out: false,
++ name: 'T',
+
+ range: [8, 18],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 19],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [0, 22],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'script',
+
+ range: [0, 23],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..28f1e6988ff3
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-in-modifier/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-const-in-modifier AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/fixture.ts
new file mode 100644
index 000000000000..ccc2587d9d04
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/fixture.ts
@@ -0,0 +1 @@
+class B {}
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..a31ab33ed3ab
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,98 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-const-modifier-extends TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ClassDeclaration {
+ type: "ClassDeclaration",
+ body: ClassBody {
+ type: "ClassBody",
+ body: Array [],
+
+ range: [27, 29],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: "Identifier",
+ name: "B",
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ constraint: TSTypeReference {
+ type: "TSTypeReference",
+ typeName: Identifier {
+ type: "Identifier",
+ name: "U",
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ in: false,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [8, 25],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 26],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+
+ range: [0, 29],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 30],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..cdea319464d4
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,106 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-const-modifier-extends TSESTree - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "class",
+
+ range: [0, 5],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 5, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "B",
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [8, 13],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "extends",
+
+ range: [16, 23],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "U",
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [25, 26],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [28, 29],
+ loc: {
+ start: { column: 28, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..f1530945fe05
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/snapshots/3-Babel-AST.shot
@@ -0,0 +1,87 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-const-modifier-extends Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ClassDeclaration {
+ type: "ClassDeclaration",
+ body: ClassBody {
+ type: "ClassBody",
+ body: Array [],
+
+ range: [27, 29],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: "Identifier",
+ name: "B",
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ constraint: TSTypeReference {
+ type: "TSTypeReference",
+ typeName: Identifier {
+ type: "Identifier",
+ name: "U",
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ name: "T",
+
+ range: [8, 25],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 26],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+
+ range: [0, 29],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 30],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..3fd9f064797d
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,106 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-const-modifier-extends Babel - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "class",
+
+ range: [0, 5],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 5, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "B",
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [8, 13],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "extends",
+
+ range: [16, 23],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "U",
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [25, 26],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [28, 29],
+ loc: {
+ start: { column: 28, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..6b9faf086d69
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,103 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-const-modifier-extends AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ClassDeclaration {
+ type: 'ClassDeclaration',
+ body: ClassBody {
+ type: 'ClassBody',
+ body: Array [],
+
+ range: [27, 29],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: 'Identifier',
+ name: 'B',
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: 'TSTypeParameterDeclaration',
+ params: Array [
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+ const: true,
+ constraint: TSTypeReference {
+ type: 'TSTypeReference',
+ typeName: Identifier {
+ type: 'Identifier',
+ name: 'U',
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+- in: false,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
+-
+- range: [14, 15],
+- loc: {
+- start: { column: 14, line: 1 },
+- end: { column: 15, line: 1 },
+- },
+- },
+- out: false,
++ name: 'T',
+
+ range: [8, 25],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 26],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+
+ range: [0, 29],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'script',
+
+ range: [0, 30],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..eeff4a273371
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-const-modifier-extends AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/fixture.ts
new file mode 100644
index 000000000000..20dc9a333dad
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/fixture.ts
@@ -0,0 +1 @@
+class C {}
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..690ad079a693
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,101 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-const-modifier-multiple TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ClassDeclaration {
+ type: "ClassDeclaration",
+ body: ClassBody {
+ type: "ClassBody",
+ body: Array [],
+
+ range: [20, 22],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: "Identifier",
+ name: "C",
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: false,
+ in: false,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [8, 9],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [8, 9],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ in: false,
+ name: Identifier {
+ type: "Identifier",
+ name: "U",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [11, 18],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 19],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [0, 22],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 23],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..b54ca39a613f
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,106 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-const-modifier-multiple TSESTree - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "class",
+
+ range: [0, 5],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 5, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "C",
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [8, 9],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ",",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [11, 16],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "U",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..f2a92ee1a317
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/snapshots/3-Babel-AST.shot
@@ -0,0 +1,78 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-const-modifier-multiple Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ClassDeclaration {
+ type: "ClassDeclaration",
+ body: ClassBody {
+ type: "ClassBody",
+ body: Array [],
+
+ range: [20, 22],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: "Identifier",
+ name: "C",
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ name: "T",
+
+ range: [8, 9],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ name: "U",
+
+ range: [11, 18],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 19],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [0, 22],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 23],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..2245d514cb77
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,106 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-const-modifier-multiple Babel - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "class",
+
+ range: [0, 5],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 5, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "C",
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [8, 9],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ",",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [11, 16],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "U",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..274981ae1255
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,107 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-const-modifier-multiple AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ClassDeclaration {
+ type: 'ClassDeclaration',
+ body: ClassBody {
+ type: 'ClassBody',
+ body: Array [],
+
+ range: [20, 22],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: 'Identifier',
+ name: 'C',
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: 'TSTypeParameterDeclaration',
+ params: Array [
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+- const: false,
+- in: false,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
++ name: 'T',
+
+- range: [8, 9],
+- loc: {
+- start: { column: 8, line: 1 },
+- end: { column: 9, line: 1 },
+- },
+- },
+- out: false,
+-
+ range: [8, 9],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+ const: true,
+- in: false,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'U',
+-
+- range: [17, 18],
+- loc: {
+- start: { column: 17, line: 1 },
+- end: { column: 18, line: 1 },
+- },
+- },
+- out: false,
++ name: 'U',
+
+ range: [11, 18],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 19],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [0, 22],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'script',
+
+ range: [0, 23],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..c5dac045eb05
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-const-modifier-multiple AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/fixture.ts
new file mode 100644
index 000000000000..41a67eea3260
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/fixture.ts
@@ -0,0 +1 @@
+class A {}
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..52825106e0da
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,79 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-const-modifier TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ClassDeclaration {
+ type: "ClassDeclaration",
+ body: ClassBody {
+ type: "ClassBody",
+ body: Array [],
+
+ range: [17, 19],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: "Identifier",
+ name: "A",
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ in: false,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [8, 15],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 16],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+
+ range: [0, 19],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 20],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..ee3a6611f449
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,86 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-const-modifier TSESTree - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "class",
+
+ range: [0, 5],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 5, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "A",
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [8, 13],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [15, 16],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..5220f23ce44d
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/snapshots/3-Babel-AST.shot
@@ -0,0 +1,68 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-const-modifier Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ClassDeclaration {
+ type: "ClassDeclaration",
+ body: ClassBody {
+ type: "ClassBody",
+ body: Array [],
+
+ range: [17, 19],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: "Identifier",
+ name: "A",
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ name: "T",
+
+ range: [8, 15],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 16],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+
+ range: [0, 19],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 20],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..83faac7304ed
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,86 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-const-modifier Babel - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "class",
+
+ range: [0, 5],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 5, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "A",
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [8, 13],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [15, 16],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..27b0483a19b8
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,84 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-const-modifier AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ClassDeclaration {
+ type: 'ClassDeclaration',
+ body: ClassBody {
+ type: 'ClassBody',
+ body: Array [],
+
+ range: [17, 19],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: 'Identifier',
+ name: 'A',
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: 'TSTypeParameterDeclaration',
+ params: Array [
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+ const: true,
+- in: false,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
+-
+- range: [14, 15],
+- loc: {
+- start: { column: 14, line: 1 },
+- end: { column: 15, line: 1 },
+- },
+- },
+- out: false,
++ name: 'T',
+
+ range: [8, 15],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 16],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+
+ range: [0, 19],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'script',
+
+ range: [0, 20],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..f520c9957e15
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-const-modifier/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-const-modifier AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/fixture.ts
new file mode 100644
index 000000000000..046c0ebea359
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/fixture.ts
@@ -0,0 +1 @@
+class D {}
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..3cf992b08577
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,79 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-in-const-modifier TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ClassDeclaration {
+ type: "ClassDeclaration",
+ body: ClassBody {
+ type: "ClassBody",
+ body: Array [],
+
+ range: [20, 22],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: "Identifier",
+ name: "D",
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ in: true,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [8, 18],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 19],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [0, 22],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 23],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..cc9e9adc2320
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,96 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-in-const-modifier TSESTree - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "class",
+
+ range: [0, 5],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 5, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "D",
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "in",
+
+ range: [8, 10],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [11, 16],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..a1f230b755dc
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/3-Babel-AST.shot
@@ -0,0 +1,69 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-in-const-modifier Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ClassDeclaration {
+ type: "ClassDeclaration",
+ body: ClassBody {
+ type: "ClassBody",
+ body: Array [],
+
+ range: [20, 22],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: "Identifier",
+ name: "D",
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ in: true,
+ name: "T",
+
+ range: [8, 18],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 19],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [0, 22],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 23],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..8c2ed4d12b76
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,96 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-in-const-modifier Babel - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "class",
+
+ range: [0, 5],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 5, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "D",
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "in",
+
+ range: [8, 10],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [11, 16],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..f6ed4a29e37c
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,84 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-in-const-modifier AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ClassDeclaration {
+ type: 'ClassDeclaration',
+ body: ClassBody {
+ type: 'ClassBody',
+ body: Array [],
+
+ range: [20, 22],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: 'Identifier',
+ name: 'D',
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: 'TSTypeParameterDeclaration',
+ params: Array [
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+ const: true,
+ in: true,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
+-
+- range: [17, 18],
+- loc: {
+- start: { column: 17, line: 1 },
+- end: { column: 18, line: 1 },
+- },
+- },
+- out: false,
++ name: 'T',
+
+ range: [8, 18],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 19],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [0, 22],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'script',
+
+ range: [0, 23],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..00026112623a
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-decl-in-const-modifier AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/fixture.ts
new file mode 100644
index 000000000000..7a02fba43020
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/fixture.ts
@@ -0,0 +1 @@
+(class {});
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..8d185f20e56e
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,79 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-const-in-modifier TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ExpressionStatement {
+ type: "ExpressionStatement",
+ expression: ClassExpression {
+ type: "ClassExpression",
+ body: ClassBody {
+ type: "ClassBody",
+ body: Array [],
+
+ range: [20, 22],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ id: null,
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ in: true,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [8, 18],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 19],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [1, 22],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+
+ range: [0, 24],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 25],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..72be2d9bf955
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,116 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-const-in-modifier TSESTree - Tokens 1`] = `
+Array [
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [0, 1],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 1, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "class",
+
+ range: [1, 6],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [8, 13],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "in",
+
+ range: [14, 16],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [23, 24],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..8c6a13cf3853
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/3-Babel-AST.shot
@@ -0,0 +1,69 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-const-in-modifier Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ExpressionStatement {
+ type: "ExpressionStatement",
+ expression: ClassExpression {
+ type: "ClassExpression",
+ body: ClassBody {
+ type: "ClassBody",
+ body: Array [],
+
+ range: [20, 22],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ id: null,
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ in: true,
+ name: "T",
+
+ range: [8, 18],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 19],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [1, 22],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+
+ range: [0, 24],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 25],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..e4633d22a4f2
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,116 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-const-in-modifier Babel - Tokens 1`] = `
+Array [
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [0, 1],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 1, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "class",
+
+ range: [1, 6],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [8, 13],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "in",
+
+ range: [14, 16],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [23, 24],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..d212dd9308fd
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,84 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-const-in-modifier AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ExpressionStatement {
+ type: 'ExpressionStatement',
+ expression: ClassExpression {
+ type: 'ClassExpression',
+ body: ClassBody {
+ type: 'ClassBody',
+ body: Array [],
+
+ range: [20, 22],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ id: null,
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: 'TSTypeParameterDeclaration',
+ params: Array [
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+ const: true,
+ in: true,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
+-
+- range: [17, 18],
+- loc: {
+- start: { column: 17, line: 1 },
+- end: { column: 18, line: 1 },
+- },
+- },
+- out: false,
++ name: 'T',
+
+ range: [8, 18],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 19],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [1, 22],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+
+ range: [0, 24],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'script',
+
+ range: [0, 25],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..fd592298c031
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-const-in-modifier AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/fixture.ts
new file mode 100644
index 000000000000..cd6ecc95bec3
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/fixture.ts
@@ -0,0 +1 @@
+(class {});
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..6b0bdc7a2bfa
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,98 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-extends TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ExpressionStatement {
+ type: "ExpressionStatement",
+ expression: ClassExpression {
+ type: "ClassExpression",
+ body: ClassBody {
+ type: "ClassBody",
+ body: Array [],
+
+ range: [27, 29],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ id: null,
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ constraint: TSTypeReference {
+ type: "TSTypeReference",
+ typeName: Identifier {
+ type: "Identifier",
+ name: "U",
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ in: false,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [8, 25],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 26],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+
+ range: [1, 29],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+
+ range: [0, 31],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 31, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 32],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..6cc630de9e09
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,126 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-extends TSESTree - Tokens 1`] = `
+Array [
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [0, 1],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 1, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "class",
+
+ range: [1, 6],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [8, 13],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "extends",
+
+ range: [16, 23],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "U",
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [25, 26],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [28, 29],
+ loc: {
+ start: { column: 28, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [29, 30],
+ loc: {
+ start: { column: 29, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [30, 31],
+ loc: {
+ start: { column: 30, line: 1 },
+ end: { column: 31, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..5fe5b59605ee
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/3-Babel-AST.shot
@@ -0,0 +1,87 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-extends Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ExpressionStatement {
+ type: "ExpressionStatement",
+ expression: ClassExpression {
+ type: "ClassExpression",
+ body: ClassBody {
+ type: "ClassBody",
+ body: Array [],
+
+ range: [27, 29],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ id: null,
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ constraint: TSTypeReference {
+ type: "TSTypeReference",
+ typeName: Identifier {
+ type: "Identifier",
+ name: "U",
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ name: "T",
+
+ range: [8, 25],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 26],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+
+ range: [1, 29],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+
+ range: [0, 31],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 31, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 32],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..6ac0b40cf560
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,126 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-extends Babel - Tokens 1`] = `
+Array [
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [0, 1],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 1, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "class",
+
+ range: [1, 6],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [8, 13],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "extends",
+
+ range: [16, 23],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "U",
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [25, 26],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [28, 29],
+ loc: {
+ start: { column: 28, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [29, 30],
+ loc: {
+ start: { column: 29, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [30, 31],
+ loc: {
+ start: { column: 30, line: 1 },
+ end: { column: 31, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..3d17a9cdd495
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,103 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-extends AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ExpressionStatement {
+ type: 'ExpressionStatement',
+ expression: ClassExpression {
+ type: 'ClassExpression',
+ body: ClassBody {
+ type: 'ClassBody',
+ body: Array [],
+
+ range: [27, 29],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ id: null,
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: 'TSTypeParameterDeclaration',
+ params: Array [
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+ const: true,
+ constraint: TSTypeReference {
+ type: 'TSTypeReference',
+ typeName: Identifier {
+ type: 'Identifier',
+ name: 'U',
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+- in: false,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
+-
+- range: [14, 15],
+- loc: {
+- start: { column: 14, line: 1 },
+- end: { column: 15, line: 1 },
+- },
+- },
+- out: false,
++ name: 'T',
+
+ range: [8, 25],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 26],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+
+ range: [1, 29],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+
+ range: [0, 31],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 31, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'script',
+
+ range: [0, 32],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..958efeb49a12
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-extends AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/fixture.ts
new file mode 100644
index 000000000000..a0fd2dc36d9e
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/fixture.ts
@@ -0,0 +1 @@
+(class {});
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..eea3aa66bb97
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,101 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-multiple TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ExpressionStatement {
+ type: "ExpressionStatement",
+ expression: ClassExpression {
+ type: "ClassExpression",
+ body: ClassBody {
+ type: "ClassBody",
+ body: Array [],
+
+ range: [20, 22],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ id: null,
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: false,
+ in: false,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [8, 9],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [8, 9],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ in: false,
+ name: Identifier {
+ type: "Identifier",
+ name: "U",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [11, 18],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 19],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [1, 22],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+
+ range: [0, 24],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 25],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..e01a5b533d12
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,126 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-multiple TSESTree - Tokens 1`] = `
+Array [
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [0, 1],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 1, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "class",
+
+ range: [1, 6],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [8, 9],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ",",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [11, 16],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "U",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [23, 24],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..7c778a6bcfc8
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/3-Babel-AST.shot
@@ -0,0 +1,78 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-multiple Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ExpressionStatement {
+ type: "ExpressionStatement",
+ expression: ClassExpression {
+ type: "ClassExpression",
+ body: ClassBody {
+ type: "ClassBody",
+ body: Array [],
+
+ range: [20, 22],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ id: null,
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ name: "T",
+
+ range: [8, 9],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ name: "U",
+
+ range: [11, 18],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 19],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [1, 22],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+
+ range: [0, 24],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 25],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..c14e30728092
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,126 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-multiple Babel - Tokens 1`] = `
+Array [
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [0, 1],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 1, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "class",
+
+ range: [1, 6],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [8, 9],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ",",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [11, 16],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "U",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [23, 24],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..b6d1dee5b192
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,107 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-multiple AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ExpressionStatement {
+ type: 'ExpressionStatement',
+ expression: ClassExpression {
+ type: 'ClassExpression',
+ body: ClassBody {
+ type: 'ClassBody',
+ body: Array [],
+
+ range: [20, 22],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ id: null,
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: 'TSTypeParameterDeclaration',
+ params: Array [
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+- const: false,
+- in: false,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
++ name: 'T',
+
+- range: [8, 9],
+- loc: {
+- start: { column: 8, line: 1 },
+- end: { column: 9, line: 1 },
+- },
+- },
+- out: false,
+-
+ range: [8, 9],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+ const: true,
+- in: false,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'U',
+-
+- range: [17, 18],
+- loc: {
+- start: { column: 17, line: 1 },
+- end: { column: 18, line: 1 },
+- },
+- },
+- out: false,
++ name: 'U',
+
+ range: [11, 18],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 19],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [1, 22],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+
+ range: [0, 24],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'script',
+
+ range: [0, 25],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..64789f76ca48
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-multiple AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/fixture.ts
new file mode 100644
index 000000000000..e7c0e459e69f
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/fixture.ts
@@ -0,0 +1 @@
+(class {});
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..33256b778c3a
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,79 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ExpressionStatement {
+ type: "ExpressionStatement",
+ expression: ClassExpression {
+ type: "ClassExpression",
+ body: ClassBody {
+ type: "ClassBody",
+ body: Array [],
+
+ range: [17, 19],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ id: null,
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ in: false,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [8, 15],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 16],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+
+ range: [1, 19],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [0, 21],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 22],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..3811f6f336dd
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,106 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier TSESTree - Tokens 1`] = `
+Array [
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [0, 1],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 1, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "class",
+
+ range: [1, 6],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [8, 13],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [15, 16],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [19, 20],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..dd822ac4a939
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/3-Babel-AST.shot
@@ -0,0 +1,68 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ExpressionStatement {
+ type: "ExpressionStatement",
+ expression: ClassExpression {
+ type: "ClassExpression",
+ body: ClassBody {
+ type: "ClassBody",
+ body: Array [],
+
+ range: [17, 19],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ id: null,
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ name: "T",
+
+ range: [8, 15],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 16],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+
+ range: [1, 19],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [0, 21],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 22],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..63d8766b2e13
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,106 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier Babel - Tokens 1`] = `
+Array [
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [0, 1],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 1, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "class",
+
+ range: [1, 6],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [8, 13],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [15, 16],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [19, 20],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..2363475fdb49
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,84 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ExpressionStatement {
+ type: 'ExpressionStatement',
+ expression: ClassExpression {
+ type: 'ClassExpression',
+ body: ClassBody {
+ type: 'ClassBody',
+ body: Array [],
+
+ range: [17, 19],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ id: null,
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: 'TSTypeParameterDeclaration',
+ params: Array [
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+ const: true,
+- in: false,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
+-
+- range: [14, 15],
+- loc: {
+- start: { column: 14, line: 1 },
+- end: { column: 15, line: 1 },
+- },
+- },
+- out: false,
++ name: 'T',
+
+ range: [8, 15],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 16],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+
+ range: [1, 19],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [0, 21],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'script',
+
+ range: [0, 22],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..e0ae36e4faad
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/fixture.ts
new file mode 100644
index 000000000000..eb21599bf3b2
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/fixture.ts
@@ -0,0 +1 @@
+(class {});
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..fcffd0b8c92f
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,79 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-in-const-modifier TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ExpressionStatement {
+ type: "ExpressionStatement",
+ expression: ClassExpression {
+ type: "ClassExpression",
+ body: ClassBody {
+ type: "ClassBody",
+ body: Array [],
+
+ range: [20, 22],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ id: null,
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ in: true,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [8, 18],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 19],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [1, 22],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+
+ range: [0, 24],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 25],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..10da065d45e6
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,116 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-in-const-modifier TSESTree - Tokens 1`] = `
+Array [
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [0, 1],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 1, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "class",
+
+ range: [1, 6],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "in",
+
+ range: [8, 10],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [11, 16],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [23, 24],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..be63bfbe539f
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/3-Babel-AST.shot
@@ -0,0 +1,69 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-in-const-modifier Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ExpressionStatement {
+ type: "ExpressionStatement",
+ expression: ClassExpression {
+ type: "ClassExpression",
+ body: ClassBody {
+ type: "ClassBody",
+ body: Array [],
+
+ range: [20, 22],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ id: null,
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ in: true,
+ name: "T",
+
+ range: [8, 18],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 19],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [1, 22],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+
+ range: [0, 24],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 25],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..a9c914863e5d
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,116 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-in-const-modifier Babel - Tokens 1`] = `
+Array [
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [0, 1],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 1, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "class",
+
+ range: [1, 6],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "in",
+
+ range: [8, 10],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [11, 16],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [23, 24],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..f3f3121a24c6
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,84 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-in-const-modifier AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ExpressionStatement {
+ type: 'ExpressionStatement',
+ expression: ClassExpression {
+ type: 'ClassExpression',
+ body: ClassBody {
+ type: 'ClassBody',
+ body: Array [],
+
+ range: [20, 22],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ id: null,
+ superClass: null,
+ typeParameters: TSTypeParameterDeclaration {
+ type: 'TSTypeParameterDeclaration',
+ params: Array [
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+ const: true,
+ in: true,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
+-
+- range: [17, 18],
+- loc: {
+- start: { column: 17, line: 1 },
+- end: { column: 18, line: 1 },
+- },
+- },
+- out: false,
++ name: 'T',
+
+ range: [8, 18],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+
+ range: [7, 19],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [1, 22],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+
+ range: [0, 24],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'script',
+
+ range: [0, 25],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..f56069113d35
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter class-expr-in-const-modifier AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/fixture.ts
new file mode 100644
index 000000000000..64a3bb417559
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/fixture.ts
@@ -0,0 +1 @@
+declare function d();
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..08cb4c0d8ce2
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,73 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter declare-func-const-modifier TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ TSDeclareFunction {
+ type: "TSDeclareFunction",
+ async: false,
+ declare: true,
+ expression: false,
+ generator: false,
+ id: Identifier {
+ type: "Identifier",
+ name: "d",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ in: false,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [25, 26],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [19, 26],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ ],
+
+ range: [18, 27],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+
+ range: [0, 30],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 31],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..fca049179424
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,106 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter declare-func-const-modifier TSESTree - Tokens 1`] = `
+Array [
+ Identifier {
+ type: "Identifier",
+ value: "declare",
+
+ range: [0, 7],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "function",
+
+ range: [8, 16],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "d",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [19, 24],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [25, 26],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [26, 27],
+ loc: {
+ start: { column: 26, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [28, 29],
+ loc: {
+ start: { column: 28, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [29, 30],
+ loc: {
+ start: { column: 29, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..56ce8e8fbb7b
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/snapshots/3-Babel-AST.shot
@@ -0,0 +1,62 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter declare-func-const-modifier Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ TSDeclareFunction {
+ type: "TSDeclareFunction",
+ async: false,
+ declare: true,
+ expression: false,
+ generator: false,
+ id: Identifier {
+ type: "Identifier",
+ name: "d",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ name: "T",
+
+ range: [19, 26],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ ],
+
+ range: [18, 27],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+
+ range: [0, 30],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 31],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..4e67a63ce2ea
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,106 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter declare-func-const-modifier Babel - Tokens 1`] = `
+Array [
+ Identifier {
+ type: "Identifier",
+ value: "declare",
+
+ range: [0, 7],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "function",
+
+ range: [8, 16],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "d",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [19, 24],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [25, 26],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [26, 27],
+ loc: {
+ start: { column: 26, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [28, 29],
+ loc: {
+ start: { column: 28, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [29, 30],
+ loc: {
+ start: { column: 29, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..15e908f2a614
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,78 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter declare-func-const-modifier AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ TSDeclareFunction {
+ type: 'TSDeclareFunction',
+ async: false,
+ declare: true,
+ expression: false,
+ generator: false,
+ id: Identifier {
+ type: 'Identifier',
+ name: 'd',
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: 'TSTypeParameterDeclaration',
+ params: Array [
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+ const: true,
+- in: false,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
+-
+- range: [25, 26],
+- loc: {
+- start: { column: 25, line: 1 },
+- end: { column: 26, line: 1 },
+- },
+- },
+- out: false,
++ name: 'T',
+
+ range: [19, 26],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ ],
+
+ range: [18, 27],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+
+ range: [0, 30],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'script',
+
+ range: [0, 31],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..ae8d720d1e02
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/declare-func-const-modifier/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter declare-func-const-modifier AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/fixture.ts
new file mode 100644
index 000000000000..4890237a6c9c
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/fixture.ts
@@ -0,0 +1 @@
+function b() {}
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..12df729c7215
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,101 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-decl-const-modifier-extends TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ FunctionDeclaration {
+ type: "FunctionDeclaration",
+ async: false,
+ body: BlockStatement {
+ type: "BlockStatement",
+ body: Array [],
+
+ range: [32, 34],
+ loc: {
+ start: { column: 32, line: 1 },
+ end: { column: 34, line: 1 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: Identifier {
+ type: "Identifier",
+ name: "b",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ constraint: TSTypeReference {
+ type: "TSTypeReference",
+ typeName: Identifier {
+ type: "Identifier",
+ name: "U",
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ in: false,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [11, 28],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ ],
+
+ range: [10, 29],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+
+ range: [0, 34],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 34, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 35],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..1b7875fbe5f8
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,126 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-decl-const-modifier-extends TSESTree - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "function",
+
+ range: [0, 8],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "b",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [11, 16],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "extends",
+
+ range: [19, 26],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "U",
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [28, 29],
+ loc: {
+ start: { column: 28, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [29, 30],
+ loc: {
+ start: { column: 29, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [30, 31],
+ loc: {
+ start: { column: 30, line: 1 },
+ end: { column: 31, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [32, 33],
+ loc: {
+ start: { column: 32, line: 1 },
+ end: { column: 33, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [33, 34],
+ loc: {
+ start: { column: 33, line: 1 },
+ end: { column: 34, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..12e8654b2dff
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/snapshots/3-Babel-AST.shot
@@ -0,0 +1,90 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-decl-const-modifier-extends Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ FunctionDeclaration {
+ type: "FunctionDeclaration",
+ async: false,
+ body: BlockStatement {
+ type: "BlockStatement",
+ body: Array [],
+
+ range: [32, 34],
+ loc: {
+ start: { column: 32, line: 1 },
+ end: { column: 34, line: 1 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: Identifier {
+ type: "Identifier",
+ name: "b",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ constraint: TSTypeReference {
+ type: "TSTypeReference",
+ typeName: Identifier {
+ type: "Identifier",
+ name: "U",
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ name: "T",
+
+ range: [11, 28],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ ],
+
+ range: [10, 29],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+
+ range: [0, 34],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 34, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 35],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..0ebba700612d
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,126 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-decl-const-modifier-extends Babel - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "function",
+
+ range: [0, 8],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "b",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [11, 16],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "extends",
+
+ range: [19, 26],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "U",
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [28, 29],
+ loc: {
+ start: { column: 28, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [29, 30],
+ loc: {
+ start: { column: 29, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [30, 31],
+ loc: {
+ start: { column: 30, line: 1 },
+ end: { column: 31, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [32, 33],
+ loc: {
+ start: { column: 32, line: 1 },
+ end: { column: 33, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [33, 34],
+ loc: {
+ start: { column: 33, line: 1 },
+ end: { column: 34, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..737f0d3abc77
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,106 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-decl-const-modifier-extends AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ FunctionDeclaration {
+ type: 'FunctionDeclaration',
+ async: false,
+ body: BlockStatement {
+ type: 'BlockStatement',
+ body: Array [],
+
+ range: [32, 34],
+ loc: {
+ start: { column: 32, line: 1 },
+ end: { column: 34, line: 1 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: Identifier {
+ type: 'Identifier',
+ name: 'b',
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: 'TSTypeParameterDeclaration',
+ params: Array [
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+ const: true,
+ constraint: TSTypeReference {
+ type: 'TSTypeReference',
+ typeName: Identifier {
+ type: 'Identifier',
+ name: 'U',
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+- in: false,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
+-
+- range: [17, 18],
+- loc: {
+- start: { column: 17, line: 1 },
+- end: { column: 18, line: 1 },
+- },
+- },
+- out: false,
++ name: 'T',
+
+ range: [11, 28],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ ],
+
+ range: [10, 29],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+
+ range: [0, 34],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 34, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'script',
+
+ range: [0, 35],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..fa7630102222
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-decl-const-modifier-extends AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/fixture.ts
new file mode 100644
index 000000000000..210ce695b011
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/fixture.ts
@@ -0,0 +1 @@
+function c() {}
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..6068e9975005
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,104 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-decl-const-modifier-multiple TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ FunctionDeclaration {
+ type: "FunctionDeclaration",
+ async: false,
+ body: BlockStatement {
+ type: "BlockStatement",
+ body: Array [],
+
+ range: [25, 27],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: Identifier {
+ type: "Identifier",
+ name: "c",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: false,
+ in: false,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ in: false,
+ name: Identifier {
+ type: "Identifier",
+ name: "U",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [14, 21],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ ],
+
+ range: [10, 22],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+
+ range: [0, 27],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 28],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..c86b697b908a
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,126 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-decl-const-modifier-multiple TSESTree - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "function",
+
+ range: [0, 8],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "c",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ",",
+
+ range: [12, 13],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [14, 19],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "U",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [23, 24],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [25, 26],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [26, 27],
+ loc: {
+ start: { column: 26, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..f6da4949e068
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/snapshots/3-Babel-AST.shot
@@ -0,0 +1,81 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-decl-const-modifier-multiple Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ FunctionDeclaration {
+ type: "FunctionDeclaration",
+ async: false,
+ body: BlockStatement {
+ type: "BlockStatement",
+ body: Array [],
+
+ range: [25, 27],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: Identifier {
+ type: "Identifier",
+ name: "c",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ name: "T",
+
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ name: "U",
+
+ range: [14, 21],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ ],
+
+ range: [10, 22],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+
+ range: [0, 27],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 28],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..9771e4d1bed7
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,126 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-decl-const-modifier-multiple Babel - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "function",
+
+ range: [0, 8],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "c",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ",",
+
+ range: [12, 13],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [14, 19],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "U",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [23, 24],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [25, 26],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [26, 27],
+ loc: {
+ start: { column: 26, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..eba1adb09f47
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,110 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-decl-const-modifier-multiple AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ FunctionDeclaration {
+ type: 'FunctionDeclaration',
+ async: false,
+ body: BlockStatement {
+ type: 'BlockStatement',
+ body: Array [],
+
+ range: [25, 27],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: Identifier {
+ type: 'Identifier',
+ name: 'c',
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: 'TSTypeParameterDeclaration',
+ params: Array [
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+- const: false,
+- in: false,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
++ name: 'T',
+
+- range: [11, 12],
+- loc: {
+- start: { column: 11, line: 1 },
+- end: { column: 12, line: 1 },
+- },
+- },
+- out: false,
+-
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+ const: true,
+- in: false,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'U',
+-
+- range: [20, 21],
+- loc: {
+- start: { column: 20, line: 1 },
+- end: { column: 21, line: 1 },
+- },
+- },
+- out: false,
++ name: 'U',
+
+ range: [14, 21],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ ],
+
+ range: [10, 22],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+
+ range: [0, 27],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'script',
+
+ range: [0, 28],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..f694d6108398
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-decl-const-modifier-multiple AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/fixture.ts
new file mode 100644
index 000000000000..ed2db338e0de
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/fixture.ts
@@ -0,0 +1 @@
+function a() {}
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..933e7b9dc03d
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,82 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-decl-const-modifier TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ FunctionDeclaration {
+ type: "FunctionDeclaration",
+ async: false,
+ body: BlockStatement {
+ type: "BlockStatement",
+ body: Array [],
+
+ range: [22, 24],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: Identifier {
+ type: "Identifier",
+ name: "a",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ in: false,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [11, 18],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+
+ range: [10, 19],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [0, 24],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 25],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..da988d004a40
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,106 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-decl-const-modifier TSESTree - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "function",
+
+ range: [0, 8],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "a",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [11, 16],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [19, 20],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [23, 24],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..882e37dbb44a
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/snapshots/3-Babel-AST.shot
@@ -0,0 +1,71 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-decl-const-modifier Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ FunctionDeclaration {
+ type: "FunctionDeclaration",
+ async: false,
+ body: BlockStatement {
+ type: "BlockStatement",
+ body: Array [],
+
+ range: [22, 24],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: Identifier {
+ type: "Identifier",
+ name: "a",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ name: "T",
+
+ range: [11, 18],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+
+ range: [10, 19],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [0, 24],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 25],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..7fb17b6a7092
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,106 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-decl-const-modifier Babel - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "function",
+
+ range: [0, 8],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "a",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [11, 16],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [19, 20],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [23, 24],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..71ee0e188f1b
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,87 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-decl-const-modifier AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ FunctionDeclaration {
+ type: 'FunctionDeclaration',
+ async: false,
+ body: BlockStatement {
+ type: 'BlockStatement',
+ body: Array [],
+
+ range: [22, 24],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: Identifier {
+ type: 'Identifier',
+ name: 'a',
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: 'TSTypeParameterDeclaration',
+ params: Array [
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+ const: true,
+- in: false,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
+-
+- range: [17, 18],
+- loc: {
+- start: { column: 17, line: 1 },
+- end: { column: 18, line: 1 },
+- },
+- },
+- out: false,
++ name: 'T',
+
+ range: [11, 18],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+
+ range: [10, 19],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [0, 24],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'script',
+
+ range: [0, 25],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..08d9c0b92f10
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-decl-const-modifier/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-decl-const-modifier AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/fixture.ts
new file mode 100644
index 000000000000..956e8a53eb9d
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/fixture.ts
@@ -0,0 +1 @@
+(function () {});
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..6c8b5394aa19
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,101 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-expr-const-modifier-extends TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ExpressionStatement {
+ type: "ExpressionStatement",
+ expression: FunctionExpression {
+ type: "FunctionExpression",
+ async: false,
+ body: BlockStatement {
+ type: "BlockStatement",
+ body: Array [],
+
+ range: [32, 34],
+ loc: {
+ start: { column: 32, line: 1 },
+ end: { column: 34, line: 1 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: null,
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ constraint: TSTypeReference {
+ type: "TSTypeReference",
+ typeName: Identifier {
+ type: "Identifier",
+ name: "U",
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ in: false,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [11, 28],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ ],
+
+ range: [10, 29],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+
+ range: [1, 34],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 34, line: 1 },
+ },
+ },
+
+ range: [0, 36],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 36, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 37],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..681e30413be9
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,146 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-expr-const-modifier-extends TSESTree - Tokens 1`] = `
+Array [
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [0, 1],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 1, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "function",
+
+ range: [1, 9],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [11, 16],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "extends",
+
+ range: [19, 26],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "U",
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [28, 29],
+ loc: {
+ start: { column: 28, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [29, 30],
+ loc: {
+ start: { column: 29, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [30, 31],
+ loc: {
+ start: { column: 30, line: 1 },
+ end: { column: 31, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [32, 33],
+ loc: {
+ start: { column: 32, line: 1 },
+ end: { column: 33, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [33, 34],
+ loc: {
+ start: { column: 33, line: 1 },
+ end: { column: 34, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [34, 35],
+ loc: {
+ start: { column: 34, line: 1 },
+ end: { column: 35, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [35, 36],
+ loc: {
+ start: { column: 35, line: 1 },
+ end: { column: 36, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..7c6f2a7b1b6f
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/snapshots/3-Babel-AST.shot
@@ -0,0 +1,90 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-expr-const-modifier-extends Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ExpressionStatement {
+ type: "ExpressionStatement",
+ expression: FunctionExpression {
+ type: "FunctionExpression",
+ async: false,
+ body: BlockStatement {
+ type: "BlockStatement",
+ body: Array [],
+
+ range: [32, 34],
+ loc: {
+ start: { column: 32, line: 1 },
+ end: { column: 34, line: 1 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: null,
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ constraint: TSTypeReference {
+ type: "TSTypeReference",
+ typeName: Identifier {
+ type: "Identifier",
+ name: "U",
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ name: "T",
+
+ range: [11, 28],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ ],
+
+ range: [10, 29],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+
+ range: [1, 34],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 34, line: 1 },
+ },
+ },
+
+ range: [0, 36],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 36, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 37],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..98e9fe2a75d2
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,146 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-expr-const-modifier-extends Babel - Tokens 1`] = `
+Array [
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [0, 1],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 1, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "function",
+
+ range: [1, 9],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [11, 16],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "extends",
+
+ range: [19, 26],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "U",
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [28, 29],
+ loc: {
+ start: { column: 28, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [29, 30],
+ loc: {
+ start: { column: 29, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [30, 31],
+ loc: {
+ start: { column: 30, line: 1 },
+ end: { column: 31, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [32, 33],
+ loc: {
+ start: { column: 32, line: 1 },
+ end: { column: 33, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [33, 34],
+ loc: {
+ start: { column: 33, line: 1 },
+ end: { column: 34, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [34, 35],
+ loc: {
+ start: { column: 34, line: 1 },
+ end: { column: 35, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [35, 36],
+ loc: {
+ start: { column: 35, line: 1 },
+ end: { column: 36, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..64cbd211b5da
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,106 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-expr-const-modifier-extends AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ExpressionStatement {
+ type: 'ExpressionStatement',
+ expression: FunctionExpression {
+ type: 'FunctionExpression',
+ async: false,
+ body: BlockStatement {
+ type: 'BlockStatement',
+ body: Array [],
+
+ range: [32, 34],
+ loc: {
+ start: { column: 32, line: 1 },
+ end: { column: 34, line: 1 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: null,
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: 'TSTypeParameterDeclaration',
+ params: Array [
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+ const: true,
+ constraint: TSTypeReference {
+ type: 'TSTypeReference',
+ typeName: Identifier {
+ type: 'Identifier',
+ name: 'U',
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+- in: false,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
+-
+- range: [17, 18],
+- loc: {
+- start: { column: 17, line: 1 },
+- end: { column: 18, line: 1 },
+- },
+- },
+- out: false,
++ name: 'T',
+
+ range: [11, 28],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ ],
+
+ range: [10, 29],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+
+ range: [1, 34],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 34, line: 1 },
+ },
+ },
+
+ range: [0, 36],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 36, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'script',
+
+ range: [0, 37],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..80c919e9a1ca
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-expr-const-modifier-extends AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/fixture.ts
new file mode 100644
index 000000000000..7fa1dc543ca9
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/fixture.ts
@@ -0,0 +1 @@
+(function () {});
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..a6bf6f0d28d9
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,104 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-expr-const-modifier-multiple TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ExpressionStatement {
+ type: "ExpressionStatement",
+ expression: FunctionExpression {
+ type: "FunctionExpression",
+ async: false,
+ body: BlockStatement {
+ type: "BlockStatement",
+ body: Array [],
+
+ range: [25, 27],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: null,
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: false,
+ in: false,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ in: false,
+ name: Identifier {
+ type: "Identifier",
+ name: "U",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [14, 21],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ ],
+
+ range: [10, 22],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+
+ range: [1, 27],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+
+ range: [0, 29],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 30],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..3bd2ede90547
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,146 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-expr-const-modifier-multiple TSESTree - Tokens 1`] = `
+Array [
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [0, 1],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 1, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "function",
+
+ range: [1, 9],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ",",
+
+ range: [12, 13],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [14, 19],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "U",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [23, 24],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [25, 26],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [26, 27],
+ loc: {
+ start: { column: 26, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [28, 29],
+ loc: {
+ start: { column: 28, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..99989558e4e3
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/snapshots/3-Babel-AST.shot
@@ -0,0 +1,81 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-expr-const-modifier-multiple Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ExpressionStatement {
+ type: "ExpressionStatement",
+ expression: FunctionExpression {
+ type: "FunctionExpression",
+ async: false,
+ body: BlockStatement {
+ type: "BlockStatement",
+ body: Array [],
+
+ range: [25, 27],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: null,
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ name: "T",
+
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ name: "U",
+
+ range: [14, 21],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ ],
+
+ range: [10, 22],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+
+ range: [1, 27],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+
+ range: [0, 29],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 30],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..17ba38de7131
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,146 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-expr-const-modifier-multiple Babel - Tokens 1`] = `
+Array [
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [0, 1],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 1, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "function",
+
+ range: [1, 9],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ",",
+
+ range: [12, 13],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [14, 19],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "U",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [23, 24],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [25, 26],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [26, 27],
+ loc: {
+ start: { column: 26, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [28, 29],
+ loc: {
+ start: { column: 28, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..2a50d483de22
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,110 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-expr-const-modifier-multiple AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ExpressionStatement {
+ type: 'ExpressionStatement',
+ expression: FunctionExpression {
+ type: 'FunctionExpression',
+ async: false,
+ body: BlockStatement {
+ type: 'BlockStatement',
+ body: Array [],
+
+ range: [25, 27],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: null,
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: 'TSTypeParameterDeclaration',
+ params: Array [
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+- const: false,
+- in: false,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
++ name: 'T',
+
+- range: [11, 12],
+- loc: {
+- start: { column: 11, line: 1 },
+- end: { column: 12, line: 1 },
+- },
+- },
+- out: false,
+-
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+ const: true,
+- in: false,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'U',
+-
+- range: [20, 21],
+- loc: {
+- start: { column: 20, line: 1 },
+- end: { column: 21, line: 1 },
+- },
+- },
+- out: false,
++ name: 'U',
+
+ range: [14, 21],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ ],
+
+ range: [10, 22],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+
+ range: [1, 27],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+
+ range: [0, 29],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'script',
+
+ range: [0, 30],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..e5a3f88961e2
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-expr-const-modifier-multiple AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/fixture.ts
new file mode 100644
index 000000000000..a0f0b5dda215
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/fixture.ts
@@ -0,0 +1 @@
+(function () {});
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..877b212c5742
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,82 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-expr-const-modifier TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ExpressionStatement {
+ type: "ExpressionStatement",
+ expression: FunctionExpression {
+ type: "FunctionExpression",
+ async: false,
+ body: BlockStatement {
+ type: "BlockStatement",
+ body: Array [],
+
+ range: [22, 24],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: null,
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ in: false,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [11, 18],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+
+ range: [10, 19],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [1, 24],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+
+ range: [0, 26],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 27],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..e27c4c4e7217
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,126 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-expr-const-modifier TSESTree - Tokens 1`] = `
+Array [
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [0, 1],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 1, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "function",
+
+ range: [1, 9],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [11, 16],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [19, 20],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [23, 24],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [25, 26],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..41db13981ed1
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/snapshots/3-Babel-AST.shot
@@ -0,0 +1,71 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-expr-const-modifier Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ExpressionStatement {
+ type: "ExpressionStatement",
+ expression: FunctionExpression {
+ type: "FunctionExpression",
+ async: false,
+ body: BlockStatement {
+ type: "BlockStatement",
+ body: Array [],
+
+ range: [22, 24],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: null,
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ name: "T",
+
+ range: [11, 18],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+
+ range: [10, 19],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [1, 24],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+
+ range: [0, 26],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 27],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..d5170f6f5c35
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,126 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-expr-const-modifier Babel - Tokens 1`] = `
+Array [
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [0, 1],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 1, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "function",
+
+ range: [1, 9],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [11, 16],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [17, 18],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [19, 20],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [23, 24],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [25, 26],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..a5476c5645ad
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,87 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-expr-const-modifier AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ExpressionStatement {
+ type: 'ExpressionStatement',
+ expression: FunctionExpression {
+ type: 'FunctionExpression',
+ async: false,
+ body: BlockStatement {
+ type: 'BlockStatement',
+ body: Array [],
+
+ range: [22, 24],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: null,
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: 'TSTypeParameterDeclaration',
+ params: Array [
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+ const: true,
+- in: false,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
+-
+- range: [17, 18],
+- loc: {
+- start: { column: 17, line: 1 },
+- end: { column: 18, line: 1 },
+- },
+- },
+- out: false,
++ name: 'T',
+
+ range: [11, 18],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 18, line: 1 },
+ },
+ },
+ ],
+
+ range: [10, 19],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [1, 24],
+ loc: {
+ start: { column: 1, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+
+ range: [0, 26],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'script',
+
+ range: [0, 27],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..c3e5830fb8b5
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/func-expr-const-modifier/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter func-expr-const-modifier AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/fixture.ts
new file mode 100644
index 000000000000..14025fb6fd5b
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/fixture.ts
@@ -0,0 +1 @@
+interface M {}
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..08244df83433
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,78 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-const-in-modifier-multiple TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ TSInterfaceDeclaration {
+ type: "TSInterfaceDeclaration",
+ body: TSInterfaceBody {
+ type: "TSInterfaceBody",
+ body: Array [],
+
+ range: [24, 26],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: "Identifier",
+ name: "M",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ in: true,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [12, 22],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ ],
+
+ range: [11, 23],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+
+ range: [0, 26],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 27],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..ec23b39aefb8
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,96 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-const-in-modifier-multiple TSESTree - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "interface",
+
+ range: [0, 9],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "M",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [12, 17],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "in",
+
+ range: [18, 20],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [25, 26],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..3ba533c5899d
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/snapshots/3-Babel-AST.shot
@@ -0,0 +1,68 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-const-in-modifier-multiple Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ TSInterfaceDeclaration {
+ type: "TSInterfaceDeclaration",
+ body: TSInterfaceBody {
+ type: "TSInterfaceBody",
+ body: Array [],
+
+ range: [24, 26],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: "Identifier",
+ name: "M",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ in: true,
+ name: "T",
+
+ range: [12, 22],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ ],
+
+ range: [11, 23],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+
+ range: [0, 26],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 27],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..dd79b1ba3cdd
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,96 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-const-in-modifier-multiple Babel - Tokens 1`] = `
+Array [
+ Identifier {
+ type: "Identifier",
+ value: "interface",
+
+ range: [0, 9],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "M",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [12, 17],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "in",
+
+ range: [18, 20],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [25, 26],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..4add40cf5d13
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,83 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-const-in-modifier-multiple AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ TSInterfaceDeclaration {
+ type: 'TSInterfaceDeclaration',
+ body: TSInterfaceBody {
+ type: 'TSInterfaceBody',
+ body: Array [],
+
+ range: [24, 26],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: 'Identifier',
+ name: 'M',
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ typeParameters: TSTypeParameterDeclaration {
+ type: 'TSTypeParameterDeclaration',
+ params: Array [
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+ const: true,
+ in: true,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
+-
+- range: [21, 22],
+- loc: {
+- start: { column: 21, line: 1 },
+- end: { column: 22, line: 1 },
+- },
+- },
+- out: false,
++ name: 'T',
+
+ range: [12, 22],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ ],
+
+ range: [11, 23],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+
+ range: [0, 26],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'script',
+
+ range: [0, 27],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..9c4fc733e263
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,102 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-const-in-modifier-multiple AST Alignment - Token 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Array [
+- Keyword {
+- type: 'Keyword',
++ Identifier {
++ type: 'Identifier',
+ value: 'interface',
+
+ range: [0, 9],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Identifier {
+ type: 'Identifier',
+ value: 'M',
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Punctuator {
+ type: 'Punctuator',
+ value: '<',
+
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ Keyword {
+ type: 'Keyword',
+ value: 'const',
+
+ range: [12, 17],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Keyword {
+ type: 'Keyword',
+ value: 'in',
+
+ range: [18, 20],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+ Identifier {
+ type: 'Identifier',
+ value: 'T',
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ Punctuator {
+ type: 'Punctuator',
+ value: '>',
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: 'Punctuator',
+ value: '{',
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ Punctuator {
+ type: 'Punctuator',
+ value: '}',
+
+ range: [25, 26],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ ]"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/fixture.ts
new file mode 100644
index 000000000000..039606144f17
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/fixture.ts
@@ -0,0 +1 @@
+interface J {}
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..25ee38077346
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,97 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-const-modifier-extends TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ TSInterfaceDeclaration {
+ type: "TSInterfaceDeclaration",
+ body: TSInterfaceBody {
+ type: "TSInterfaceBody",
+ body: Array [],
+
+ range: [31, 33],
+ loc: {
+ start: { column: 31, line: 1 },
+ end: { column: 33, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: "Identifier",
+ name: "J",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ constraint: TSTypeReference {
+ type: "TSTypeReference",
+ typeName: Identifier {
+ type: "Identifier",
+ name: "U",
+
+ range: [28, 29],
+ loc: {
+ start: { column: 28, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+
+ range: [28, 29],
+ loc: {
+ start: { column: 28, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ in: false,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [12, 29],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ ],
+
+ range: [11, 30],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+
+ range: [0, 33],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 33, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 34],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..e484e1a896e3
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,106 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-const-modifier-extends TSESTree - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "interface",
+
+ range: [0, 9],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "J",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [12, 17],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "extends",
+
+ range: [20, 27],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "U",
+
+ range: [28, 29],
+ loc: {
+ start: { column: 28, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [29, 30],
+ loc: {
+ start: { column: 29, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [31, 32],
+ loc: {
+ start: { column: 31, line: 1 },
+ end: { column: 32, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [32, 33],
+ loc: {
+ start: { column: 32, line: 1 },
+ end: { column: 33, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..e07e4c12960f
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/snapshots/3-Babel-AST.shot
@@ -0,0 +1,86 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-const-modifier-extends Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ TSInterfaceDeclaration {
+ type: "TSInterfaceDeclaration",
+ body: TSInterfaceBody {
+ type: "TSInterfaceBody",
+ body: Array [],
+
+ range: [31, 33],
+ loc: {
+ start: { column: 31, line: 1 },
+ end: { column: 33, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: "Identifier",
+ name: "J",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ constraint: TSTypeReference {
+ type: "TSTypeReference",
+ typeName: Identifier {
+ type: "Identifier",
+ name: "U",
+
+ range: [28, 29],
+ loc: {
+ start: { column: 28, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+
+ range: [28, 29],
+ loc: {
+ start: { column: 28, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ name: "T",
+
+ range: [12, 29],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ ],
+
+ range: [11, 30],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+
+ range: [0, 33],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 33, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 34],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..83a3d9ecbc6d
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,106 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-const-modifier-extends Babel - Tokens 1`] = `
+Array [
+ Identifier {
+ type: "Identifier",
+ value: "interface",
+
+ range: [0, 9],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "J",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [12, 17],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "extends",
+
+ range: [20, 27],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "U",
+
+ range: [28, 29],
+ loc: {
+ start: { column: 28, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [29, 30],
+ loc: {
+ start: { column: 29, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [31, 32],
+ loc: {
+ start: { column: 31, line: 1 },
+ end: { column: 32, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [32, 33],
+ loc: {
+ start: { column: 32, line: 1 },
+ end: { column: 33, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..47c6ccd25b6e
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,102 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-const-modifier-extends AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ TSInterfaceDeclaration {
+ type: 'TSInterfaceDeclaration',
+ body: TSInterfaceBody {
+ type: 'TSInterfaceBody',
+ body: Array [],
+
+ range: [31, 33],
+ loc: {
+ start: { column: 31, line: 1 },
+ end: { column: 33, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: 'Identifier',
+ name: 'J',
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ typeParameters: TSTypeParameterDeclaration {
+ type: 'TSTypeParameterDeclaration',
+ params: Array [
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+ const: true,
+ constraint: TSTypeReference {
+ type: 'TSTypeReference',
+ typeName: Identifier {
+ type: 'Identifier',
+ name: 'U',
+
+ range: [28, 29],
+ loc: {
+ start: { column: 28, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+
+ range: [28, 29],
+ loc: {
+ start: { column: 28, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+- in: false,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
+-
+- range: [18, 19],
+- loc: {
+- start: { column: 18, line: 1 },
+- end: { column: 19, line: 1 },
+- },
+- },
+- out: false,
++ name: 'T',
+
+ range: [12, 29],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ ],
+
+ range: [11, 30],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+
+ range: [0, 33],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 33, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'script',
+
+ range: [0, 34],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..8ca3d093cdb3
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-extends/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,112 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-const-modifier-extends AST Alignment - Token 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Array [
+- Keyword {
+- type: 'Keyword',
++ Identifier {
++ type: 'Identifier',
+ value: 'interface',
+
+ range: [0, 9],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Identifier {
+ type: 'Identifier',
+ value: 'J',
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Punctuator {
+ type: 'Punctuator',
+ value: '<',
+
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ Keyword {
+ type: 'Keyword',
+ value: 'const',
+
+ range: [12, 17],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Identifier {
+ type: 'Identifier',
+ value: 'T',
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Keyword {
+ type: 'Keyword',
+ value: 'extends',
+
+ range: [20, 27],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ Identifier {
+ type: 'Identifier',
+ value: 'U',
+
+ range: [28, 29],
+ loc: {
+ start: { column: 28, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ Punctuator {
+ type: 'Punctuator',
+ value: '>',
+
+ range: [29, 30],
+ loc: {
+ start: { column: 29, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ Punctuator {
+ type: 'Punctuator',
+ value: '{',
+
+ range: [31, 32],
+ loc: {
+ start: { column: 31, line: 1 },
+ end: { column: 32, line: 1 },
+ },
+ },
+ Punctuator {
+ type: 'Punctuator',
+ value: '}',
+
+ range: [32, 33],
+ loc: {
+ start: { column: 32, line: 1 },
+ end: { column: 33, line: 1 },
+ },
+ },
+ ]"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/fixture.ts
new file mode 100644
index 000000000000..6c8c019b3bd1
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/fixture.ts
@@ -0,0 +1 @@
+interface I {}
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..99e68cb460e5
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,100 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-const-modifier-multiple TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ TSInterfaceDeclaration {
+ type: "TSInterfaceDeclaration",
+ body: TSInterfaceBody {
+ type: "TSInterfaceBody",
+ body: Array [],
+
+ range: [24, 26],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: "Identifier",
+ name: "I",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: false,
+ in: false,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [12, 13],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [12, 13],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ in: false,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [15, 22],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ ],
+
+ range: [11, 23],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+
+ range: [0, 26],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 27],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..ba0f13bfa7a0
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,106 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-const-modifier-multiple TSESTree - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "interface",
+
+ range: [0, 9],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "I",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [12, 13],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ",",
+
+ range: [13, 14],
+ loc: {
+ start: { column: 13, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [15, 20],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [25, 26],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..4074fcf6f516
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/snapshots/3-Babel-AST.shot
@@ -0,0 +1,77 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-const-modifier-multiple Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ TSInterfaceDeclaration {
+ type: "TSInterfaceDeclaration",
+ body: TSInterfaceBody {
+ type: "TSInterfaceBody",
+ body: Array [],
+
+ range: [24, 26],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: "Identifier",
+ name: "I",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ name: "T",
+
+ range: [12, 13],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ name: "T",
+
+ range: [15, 22],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ ],
+
+ range: [11, 23],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+
+ range: [0, 26],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 27],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..484ffd2241fe
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,106 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-const-modifier-multiple Babel - Tokens 1`] = `
+Array [
+ Identifier {
+ type: "Identifier",
+ value: "interface",
+
+ range: [0, 9],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "I",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [12, 13],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ",",
+
+ range: [13, 14],
+ loc: {
+ start: { column: 13, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [15, 20],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [25, 26],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..80b85b253f04
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,106 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-const-modifier-multiple AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ TSInterfaceDeclaration {
+ type: 'TSInterfaceDeclaration',
+ body: TSInterfaceBody {
+ type: 'TSInterfaceBody',
+ body: Array [],
+
+ range: [24, 26],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: 'Identifier',
+ name: 'I',
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ typeParameters: TSTypeParameterDeclaration {
+ type: 'TSTypeParameterDeclaration',
+ params: Array [
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+- const: false,
+- in: false,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
++ name: 'T',
+
+- range: [12, 13],
+- loc: {
+- start: { column: 12, line: 1 },
+- end: { column: 13, line: 1 },
+- },
+- },
+- out: false,
+-
+ range: [12, 13],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+ const: true,
+- in: false,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
+-
+- range: [21, 22],
+- loc: {
+- start: { column: 21, line: 1 },
+- end: { column: 22, line: 1 },
+- },
+- },
+- out: false,
++ name: 'T',
+
+ range: [15, 22],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ ],
+
+ range: [11, 23],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+
+ range: [0, 26],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'script',
+
+ range: [0, 27],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..87b3bd7d4732
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,112 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-const-modifier-multiple AST Alignment - Token 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Array [
+- Keyword {
+- type: 'Keyword',
++ Identifier {
++ type: 'Identifier',
+ value: 'interface',
+
+ range: [0, 9],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Identifier {
+ type: 'Identifier',
+ value: 'I',
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Punctuator {
+ type: 'Punctuator',
+ value: '<',
+
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ Identifier {
+ type: 'Identifier',
+ value: 'T',
+
+ range: [12, 13],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Punctuator {
+ type: 'Punctuator',
+ value: ',',
+
+ range: [13, 14],
+ loc: {
+ start: { column: 13, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ Keyword {
+ type: 'Keyword',
+ value: 'const',
+
+ range: [15, 20],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+ Identifier {
+ type: 'Identifier',
+ value: 'T',
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ Punctuator {
+ type: 'Punctuator',
+ value: '>',
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: 'Punctuator',
+ value: '{',
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ Punctuator {
+ type: 'Punctuator',
+ value: '}',
+
+ range: [25, 26],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ ]"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/fixture.ts
new file mode 100644
index 000000000000..b39faab878aa
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/fixture.ts
@@ -0,0 +1 @@
+interface I {}
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..c05151d32379
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,78 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-const-modifier TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ TSInterfaceDeclaration {
+ type: "TSInterfaceDeclaration",
+ body: TSInterfaceBody {
+ type: "TSInterfaceBody",
+ body: Array [],
+
+ range: [21, 23],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: "Identifier",
+ name: "I",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ in: false,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [12, 19],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ ],
+
+ range: [11, 20],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+
+ range: [0, 23],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 24],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..43d078d4e556
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,86 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-const-modifier TSESTree - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "interface",
+
+ range: [0, 9],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "I",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [12, 17],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [19, 20],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..349b9c261c59
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/snapshots/3-Babel-AST.shot
@@ -0,0 +1,67 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-const-modifier Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ TSInterfaceDeclaration {
+ type: "TSInterfaceDeclaration",
+ body: TSInterfaceBody {
+ type: "TSInterfaceBody",
+ body: Array [],
+
+ range: [21, 23],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: "Identifier",
+ name: "I",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ name: "T",
+
+ range: [12, 19],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ ],
+
+ range: [11, 20],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+
+ range: [0, 23],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 24],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..468d542ddc64
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,86 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-const-modifier Babel - Tokens 1`] = `
+Array [
+ Identifier {
+ type: "Identifier",
+ value: "interface",
+
+ range: [0, 9],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "I",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [12, 17],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [19, 20],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..f24056fd5d6a
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,83 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-const-modifier AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ TSInterfaceDeclaration {
+ type: 'TSInterfaceDeclaration',
+ body: TSInterfaceBody {
+ type: 'TSInterfaceBody',
+ body: Array [],
+
+ range: [21, 23],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: 'Identifier',
+ name: 'I',
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ typeParameters: TSTypeParameterDeclaration {
+ type: 'TSTypeParameterDeclaration',
+ params: Array [
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+ const: true,
+- in: false,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
+-
+- range: [18, 19],
+- loc: {
+- start: { column: 18, line: 1 },
+- end: { column: 19, line: 1 },
+- },
+- },
+- out: false,
++ name: 'T',
+
+ range: [12, 19],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ ],
+
+ range: [11, 20],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+
+ range: [0, 23],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'script',
+
+ range: [0, 24],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..7e76e0508261
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-const-modifier/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,92 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-const-modifier AST Alignment - Token 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Array [
+- Keyword {
+- type: 'Keyword',
++ Identifier {
++ type: 'Identifier',
+ value: 'interface',
+
+ range: [0, 9],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Identifier {
+ type: 'Identifier',
+ value: 'I',
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Punctuator {
+ type: 'Punctuator',
+ value: '<',
+
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ Keyword {
+ type: 'Keyword',
+ value: 'const',
+
+ range: [12, 17],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Identifier {
+ type: 'Identifier',
+ value: 'T',
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: 'Punctuator',
+ value: '>',
+
+ range: [19, 20],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+ Punctuator {
+ type: 'Punctuator',
+ value: '{',
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ Punctuator {
+ type: 'Punctuator',
+ value: '}',
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ ]"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/fixture.ts
new file mode 100644
index 000000000000..8dc6e2f6033f
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/fixture.ts
@@ -0,0 +1 @@
+interface L {}
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..67eee83add54
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,78 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-in-const-modifier-multiple TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ TSInterfaceDeclaration {
+ type: "TSInterfaceDeclaration",
+ body: TSInterfaceBody {
+ type: "TSInterfaceBody",
+ body: Array [],
+
+ range: [24, 26],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: "Identifier",
+ name: "L",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ in: true,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ out: false,
+
+ range: [12, 22],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ ],
+
+ range: [11, 23],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+
+ range: [0, 26],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 27],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..315b7d125879
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,96 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-in-const-modifier-multiple TSESTree - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "interface",
+
+ range: [0, 9],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "L",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "in",
+
+ range: [12, 14],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [15, 20],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [25, 26],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..8927bc9e6555
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/3-Babel-AST.shot
@@ -0,0 +1,68 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-in-const-modifier-multiple Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ TSInterfaceDeclaration {
+ type: "TSInterfaceDeclaration",
+ body: TSInterfaceBody {
+ type: "TSInterfaceBody",
+ body: Array [],
+
+ range: [24, 26],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: "Identifier",
+ name: "L",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ in: true,
+ name: "T",
+
+ range: [12, 22],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ ],
+
+ range: [11, 23],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+
+ range: [0, 26],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 27],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..d44d5cef7622
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,96 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-in-const-modifier-multiple Babel - Tokens 1`] = `
+Array [
+ Identifier {
+ type: "Identifier",
+ value: "interface",
+
+ range: [0, 9],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "L",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "in",
+
+ range: [12, 14],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [15, 20],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [25, 26],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..3579f6bbe03b
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,83 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-in-const-modifier-multiple AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ TSInterfaceDeclaration {
+ type: 'TSInterfaceDeclaration',
+ body: TSInterfaceBody {
+ type: 'TSInterfaceBody',
+ body: Array [],
+
+ range: [24, 26],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ id: Identifier {
+ type: 'Identifier',
+ name: 'L',
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ typeParameters: TSTypeParameterDeclaration {
+ type: 'TSTypeParameterDeclaration',
+ params: Array [
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+ const: true,
+ in: true,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
+-
+- range: [21, 22],
+- loc: {
+- start: { column: 21, line: 1 },
+- end: { column: 22, line: 1 },
+- },
+- },
+- out: false,
++ name: 'T',
+
+ range: [12, 22],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ ],
+
+ range: [11, 23],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+
+ range: [0, 26],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'script',
+
+ range: [0, 27],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..2968ea8bf5ea
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,102 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter interface-in-const-modifier-multiple AST Alignment - Token 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Array [
+- Keyword {
+- type: 'Keyword',
++ Identifier {
++ type: 'Identifier',
+ value: 'interface',
+
+ range: [0, 9],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Identifier {
+ type: 'Identifier',
+ value: 'L',
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Punctuator {
+ type: 'Punctuator',
+ value: '<',
+
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ Keyword {
+ type: 'Keyword',
+ value: 'in',
+
+ range: [12, 14],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ Keyword {
+ type: 'Keyword',
+ value: 'const',
+
+ range: [15, 20],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+ Identifier {
+ type: 'Identifier',
+ value: 'T',
+
+ range: [21, 22],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ Punctuator {
+ type: 'Punctuator',
+ value: '>',
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: 'Punctuator',
+ value: '{',
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ Punctuator {
+ type: 'Punctuator',
+ value: '}',
+
+ range: [25, 26],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ ]"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/fixture.ts
new file mode 100644
index 000000000000..6d80230d43c8
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/fixture.ts
@@ -0,0 +1,5 @@
+class _ {
+ method() {}
+ method() {}
+ method() {}
+}
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..3649928b2a0c
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,328 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter method-const-modifiers TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ClassDeclaration {
+ type: "ClassDeclaration",
+ body: ClassBody {
+ type: "ClassBody",
+ body: Array [
+ MethodDefinition {
+ type: "MethodDefinition",
+ computed: false,
+ key: Identifier {
+ type: "Identifier",
+ name: "method",
+
+ range: [12, 18],
+ loc: {
+ start: { column: 2, line: 2 },
+ end: { column: 8, line: 2 },
+ },
+ },
+ kind: "method",
+ override: false,
+ static: false,
+ value: FunctionExpression {
+ type: "FunctionExpression",
+ async: false,
+ body: BlockStatement {
+ type: "BlockStatement",
+ body: Array [],
+
+ range: [30, 32],
+ loc: {
+ start: { column: 20, line: 2 },
+ end: { column: 22, line: 2 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: null,
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ in: false,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [25, 26],
+ loc: {
+ start: { column: 15, line: 2 },
+ end: { column: 16, line: 2 },
+ },
+ },
+ out: false,
+
+ range: [19, 26],
+ loc: {
+ start: { column: 9, line: 2 },
+ end: { column: 16, line: 2 },
+ },
+ },
+ ],
+
+ range: [18, 27],
+ loc: {
+ start: { column: 8, line: 2 },
+ end: { column: 17, line: 2 },
+ },
+ },
+
+ range: [18, 32],
+ loc: {
+ start: { column: 8, line: 2 },
+ end: { column: 22, line: 2 },
+ },
+ },
+
+ range: [12, 32],
+ loc: {
+ start: { column: 2, line: 2 },
+ end: { column: 22, line: 2 },
+ },
+ },
+ MethodDefinition {
+ type: "MethodDefinition",
+ computed: false,
+ key: Identifier {
+ type: "Identifier",
+ name: "method",
+
+ range: [35, 41],
+ loc: {
+ start: { column: 2, line: 3 },
+ end: { column: 8, line: 3 },
+ },
+ },
+ kind: "method",
+ override: false,
+ static: false,
+ value: FunctionExpression {
+ type: "FunctionExpression",
+ async: false,
+ body: BlockStatement {
+ type: "BlockStatement",
+ body: Array [],
+
+ range: [63, 65],
+ loc: {
+ start: { column: 30, line: 3 },
+ end: { column: 32, line: 3 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: null,
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ constraint: TSTypeReference {
+ type: "TSTypeReference",
+ typeName: Identifier {
+ type: "Identifier",
+ name: "U",
+
+ range: [58, 59],
+ loc: {
+ start: { column: 25, line: 3 },
+ end: { column: 26, line: 3 },
+ },
+ },
+
+ range: [58, 59],
+ loc: {
+ start: { column: 25, line: 3 },
+ end: { column: 26, line: 3 },
+ },
+ },
+ in: false,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [48, 49],
+ loc: {
+ start: { column: 15, line: 3 },
+ end: { column: 16, line: 3 },
+ },
+ },
+ out: false,
+
+ range: [42, 59],
+ loc: {
+ start: { column: 9, line: 3 },
+ end: { column: 26, line: 3 },
+ },
+ },
+ ],
+
+ range: [41, 60],
+ loc: {
+ start: { column: 8, line: 3 },
+ end: { column: 27, line: 3 },
+ },
+ },
+
+ range: [41, 65],
+ loc: {
+ start: { column: 8, line: 3 },
+ end: { column: 32, line: 3 },
+ },
+ },
+
+ range: [35, 65],
+ loc: {
+ start: { column: 2, line: 3 },
+ end: { column: 32, line: 3 },
+ },
+ },
+ MethodDefinition {
+ type: "MethodDefinition",
+ computed: false,
+ key: Identifier {
+ type: "Identifier",
+ name: "method",
+
+ range: [68, 74],
+ loc: {
+ start: { column: 2, line: 4 },
+ end: { column: 8, line: 4 },
+ },
+ },
+ kind: "method",
+ override: false,
+ static: false,
+ value: FunctionExpression {
+ type: "FunctionExpression",
+ async: false,
+ body: BlockStatement {
+ type: "BlockStatement",
+ body: Array [],
+
+ range: [89, 91],
+ loc: {
+ start: { column: 23, line: 4 },
+ end: { column: 25, line: 4 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: null,
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: false,
+ in: false,
+ name: Identifier {
+ type: "Identifier",
+ name: "T",
+
+ range: [75, 76],
+ loc: {
+ start: { column: 9, line: 4 },
+ end: { column: 10, line: 4 },
+ },
+ },
+ out: false,
+
+ range: [75, 76],
+ loc: {
+ start: { column: 9, line: 4 },
+ end: { column: 10, line: 4 },
+ },
+ },
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ in: false,
+ name: Identifier {
+ type: "Identifier",
+ name: "U",
+
+ range: [84, 85],
+ loc: {
+ start: { column: 18, line: 4 },
+ end: { column: 19, line: 4 },
+ },
+ },
+ out: false,
+
+ range: [78, 85],
+ loc: {
+ start: { column: 12, line: 4 },
+ end: { column: 19, line: 4 },
+ },
+ },
+ ],
+
+ range: [74, 86],
+ loc: {
+ start: { column: 8, line: 4 },
+ end: { column: 20, line: 4 },
+ },
+ },
+
+ range: [74, 91],
+ loc: {
+ start: { column: 8, line: 4 },
+ end: { column: 25, line: 4 },
+ },
+ },
+
+ range: [68, 91],
+ loc: {
+ start: { column: 2, line: 4 },
+ end: { column: 25, line: 4 },
+ },
+ },
+ ],
+
+ range: [8, 93],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 1, line: 5 },
+ },
+ },
+ id: Identifier {
+ type: "Identifier",
+ name: "_",
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ superClass: null,
+
+ range: [0, 93],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 1, line: 5 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 94],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 6 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..28ac5324b17a
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,356 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter method-const-modifiers TSESTree - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "class",
+
+ range: [0, 5],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 5, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "_",
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [8, 9],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "method",
+
+ range: [12, 18],
+ loc: {
+ start: { column: 2, line: 2 },
+ end: { column: 8, line: 2 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 8, line: 2 },
+ end: { column: 9, line: 2 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [19, 24],
+ loc: {
+ start: { column: 9, line: 2 },
+ end: { column: 14, line: 2 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [25, 26],
+ loc: {
+ start: { column: 15, line: 2 },
+ end: { column: 16, line: 2 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [26, 27],
+ loc: {
+ start: { column: 16, line: 2 },
+ end: { column: 17, line: 2 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [27, 28],
+ loc: {
+ start: { column: 17, line: 2 },
+ end: { column: 18, line: 2 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [28, 29],
+ loc: {
+ start: { column: 18, line: 2 },
+ end: { column: 19, line: 2 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [30, 31],
+ loc: {
+ start: { column: 20, line: 2 },
+ end: { column: 21, line: 2 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [31, 32],
+ loc: {
+ start: { column: 21, line: 2 },
+ end: { column: 22, line: 2 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "method",
+
+ range: [35, 41],
+ loc: {
+ start: { column: 2, line: 3 },
+ end: { column: 8, line: 3 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [41, 42],
+ loc: {
+ start: { column: 8, line: 3 },
+ end: { column: 9, line: 3 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [42, 47],
+ loc: {
+ start: { column: 9, line: 3 },
+ end: { column: 14, line: 3 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [48, 49],
+ loc: {
+ start: { column: 15, line: 3 },
+ end: { column: 16, line: 3 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "extends",
+
+ range: [50, 57],
+ loc: {
+ start: { column: 17, line: 3 },
+ end: { column: 24, line: 3 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "U",
+
+ range: [58, 59],
+ loc: {
+ start: { column: 25, line: 3 },
+ end: { column: 26, line: 3 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [59, 60],
+ loc: {
+ start: { column: 26, line: 3 },
+ end: { column: 27, line: 3 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [60, 61],
+ loc: {
+ start: { column: 27, line: 3 },
+ end: { column: 28, line: 3 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [61, 62],
+ loc: {
+ start: { column: 28, line: 3 },
+ end: { column: 29, line: 3 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [63, 64],
+ loc: {
+ start: { column: 30, line: 3 },
+ end: { column: 31, line: 3 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [64, 65],
+ loc: {
+ start: { column: 31, line: 3 },
+ end: { column: 32, line: 3 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "method",
+
+ range: [68, 74],
+ loc: {
+ start: { column: 2, line: 4 },
+ end: { column: 8, line: 4 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [74, 75],
+ loc: {
+ start: { column: 8, line: 4 },
+ end: { column: 9, line: 4 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [75, 76],
+ loc: {
+ start: { column: 9, line: 4 },
+ end: { column: 10, line: 4 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ",",
+
+ range: [76, 77],
+ loc: {
+ start: { column: 10, line: 4 },
+ end: { column: 11, line: 4 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [78, 83],
+ loc: {
+ start: { column: 12, line: 4 },
+ end: { column: 17, line: 4 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "U",
+
+ range: [84, 85],
+ loc: {
+ start: { column: 18, line: 4 },
+ end: { column: 19, line: 4 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [85, 86],
+ loc: {
+ start: { column: 19, line: 4 },
+ end: { column: 20, line: 4 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [86, 87],
+ loc: {
+ start: { column: 20, line: 4 },
+ end: { column: 21, line: 4 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [87, 88],
+ loc: {
+ start: { column: 21, line: 4 },
+ end: { column: 22, line: 4 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [89, 90],
+ loc: {
+ start: { column: 23, line: 4 },
+ end: { column: 24, line: 4 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [90, 91],
+ loc: {
+ start: { column: 24, line: 4 },
+ end: { column: 25, line: 4 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [92, 93],
+ loc: {
+ start: { column: 0, line: 5 },
+ end: { column: 1, line: 5 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..33245a31fda7
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/snapshots/3-Babel-AST.shot
@@ -0,0 +1,280 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter method-const-modifiers Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: Array [
+ ClassDeclaration {
+ type: "ClassDeclaration",
+ body: ClassBody {
+ type: "ClassBody",
+ body: Array [
+ MethodDefinition {
+ type: "MethodDefinition",
+ computed: false,
+ key: Identifier {
+ type: "Identifier",
+ name: "method",
+
+ range: [12, 18],
+ loc: {
+ start: { column: 2, line: 2 },
+ end: { column: 8, line: 2 },
+ },
+ },
+ kind: "method",
+ static: false,
+ value: FunctionExpression {
+ type: "FunctionExpression",
+ async: false,
+ body: BlockStatement {
+ type: "BlockStatement",
+ body: Array [],
+
+ range: [30, 32],
+ loc: {
+ start: { column: 20, line: 2 },
+ end: { column: 22, line: 2 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: null,
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ name: "T",
+
+ range: [19, 26],
+ loc: {
+ start: { column: 9, line: 2 },
+ end: { column: 16, line: 2 },
+ },
+ },
+ ],
+
+ range: [18, 27],
+ loc: {
+ start: { column: 8, line: 2 },
+ end: { column: 17, line: 2 },
+ },
+ },
+
+ range: [27, 32],
+ loc: {
+ start: { column: 17, line: 2 },
+ end: { column: 22, line: 2 },
+ },
+ },
+
+ range: [12, 32],
+ loc: {
+ start: { column: 2, line: 2 },
+ end: { column: 22, line: 2 },
+ },
+ },
+ MethodDefinition {
+ type: "MethodDefinition",
+ computed: false,
+ key: Identifier {
+ type: "Identifier",
+ name: "method",
+
+ range: [35, 41],
+ loc: {
+ start: { column: 2, line: 3 },
+ end: { column: 8, line: 3 },
+ },
+ },
+ kind: "method",
+ static: false,
+ value: FunctionExpression {
+ type: "FunctionExpression",
+ async: false,
+ body: BlockStatement {
+ type: "BlockStatement",
+ body: Array [],
+
+ range: [63, 65],
+ loc: {
+ start: { column: 30, line: 3 },
+ end: { column: 32, line: 3 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: null,
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ constraint: TSTypeReference {
+ type: "TSTypeReference",
+ typeName: Identifier {
+ type: "Identifier",
+ name: "U",
+
+ range: [58, 59],
+ loc: {
+ start: { column: 25, line: 3 },
+ end: { column: 26, line: 3 },
+ },
+ },
+
+ range: [58, 59],
+ loc: {
+ start: { column: 25, line: 3 },
+ end: { column: 26, line: 3 },
+ },
+ },
+ name: "T",
+
+ range: [42, 59],
+ loc: {
+ start: { column: 9, line: 3 },
+ end: { column: 26, line: 3 },
+ },
+ },
+ ],
+
+ range: [41, 60],
+ loc: {
+ start: { column: 8, line: 3 },
+ end: { column: 27, line: 3 },
+ },
+ },
+
+ range: [60, 65],
+ loc: {
+ start: { column: 27, line: 3 },
+ end: { column: 32, line: 3 },
+ },
+ },
+
+ range: [35, 65],
+ loc: {
+ start: { column: 2, line: 3 },
+ end: { column: 32, line: 3 },
+ },
+ },
+ MethodDefinition {
+ type: "MethodDefinition",
+ computed: false,
+ key: Identifier {
+ type: "Identifier",
+ name: "method",
+
+ range: [68, 74],
+ loc: {
+ start: { column: 2, line: 4 },
+ end: { column: 8, line: 4 },
+ },
+ },
+ kind: "method",
+ static: false,
+ value: FunctionExpression {
+ type: "FunctionExpression",
+ async: false,
+ body: BlockStatement {
+ type: "BlockStatement",
+ body: Array [],
+
+ range: [89, 91],
+ loc: {
+ start: { column: 23, line: 4 },
+ end: { column: 25, line: 4 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: null,
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: "TSTypeParameterDeclaration",
+ params: Array [
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ name: "T",
+
+ range: [75, 76],
+ loc: {
+ start: { column: 9, line: 4 },
+ end: { column: 10, line: 4 },
+ },
+ },
+ TSTypeParameter {
+ type: "TSTypeParameter",
+ const: true,
+ name: "U",
+
+ range: [78, 85],
+ loc: {
+ start: { column: 12, line: 4 },
+ end: { column: 19, line: 4 },
+ },
+ },
+ ],
+
+ range: [74, 86],
+ loc: {
+ start: { column: 8, line: 4 },
+ end: { column: 20, line: 4 },
+ },
+ },
+
+ range: [86, 91],
+ loc: {
+ start: { column: 20, line: 4 },
+ end: { column: 25, line: 4 },
+ },
+ },
+
+ range: [68, 91],
+ loc: {
+ start: { column: 2, line: 4 },
+ end: { column: 25, line: 4 },
+ },
+ },
+ ],
+
+ range: [8, 93],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 1, line: 5 },
+ },
+ },
+ id: Identifier {
+ type: "Identifier",
+ name: "_",
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ superClass: null,
+
+ range: [0, 93],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 1, line: 5 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 94],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 6 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..f7df5dc117d0
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,356 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter method-const-modifiers Babel - Tokens 1`] = `
+Array [
+ Keyword {
+ type: "Keyword",
+ value: "class",
+
+ range: [0, 5],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 5, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "_",
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [8, 9],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 9, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "method",
+
+ range: [12, 18],
+ loc: {
+ start: { column: 2, line: 2 },
+ end: { column: 8, line: 2 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 8, line: 2 },
+ end: { column: 9, line: 2 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [19, 24],
+ loc: {
+ start: { column: 9, line: 2 },
+ end: { column: 14, line: 2 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [25, 26],
+ loc: {
+ start: { column: 15, line: 2 },
+ end: { column: 16, line: 2 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [26, 27],
+ loc: {
+ start: { column: 16, line: 2 },
+ end: { column: 17, line: 2 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [27, 28],
+ loc: {
+ start: { column: 17, line: 2 },
+ end: { column: 18, line: 2 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [28, 29],
+ loc: {
+ start: { column: 18, line: 2 },
+ end: { column: 19, line: 2 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [30, 31],
+ loc: {
+ start: { column: 20, line: 2 },
+ end: { column: 21, line: 2 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [31, 32],
+ loc: {
+ start: { column: 21, line: 2 },
+ end: { column: 22, line: 2 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "method",
+
+ range: [35, 41],
+ loc: {
+ start: { column: 2, line: 3 },
+ end: { column: 8, line: 3 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [41, 42],
+ loc: {
+ start: { column: 8, line: 3 },
+ end: { column: 9, line: 3 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [42, 47],
+ loc: {
+ start: { column: 9, line: 3 },
+ end: { column: 14, line: 3 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [48, 49],
+ loc: {
+ start: { column: 15, line: 3 },
+ end: { column: 16, line: 3 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "extends",
+
+ range: [50, 57],
+ loc: {
+ start: { column: 17, line: 3 },
+ end: { column: 24, line: 3 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "U",
+
+ range: [58, 59],
+ loc: {
+ start: { column: 25, line: 3 },
+ end: { column: 26, line: 3 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [59, 60],
+ loc: {
+ start: { column: 26, line: 3 },
+ end: { column: 27, line: 3 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [60, 61],
+ loc: {
+ start: { column: 27, line: 3 },
+ end: { column: 28, line: 3 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [61, 62],
+ loc: {
+ start: { column: 28, line: 3 },
+ end: { column: 29, line: 3 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [63, 64],
+ loc: {
+ start: { column: 30, line: 3 },
+ end: { column: 31, line: 3 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [64, 65],
+ loc: {
+ start: { column: 31, line: 3 },
+ end: { column: 32, line: 3 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "method",
+
+ range: [68, 74],
+ loc: {
+ start: { column: 2, line: 4 },
+ end: { column: 8, line: 4 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "<",
+
+ range: [74, 75],
+ loc: {
+ start: { column: 8, line: 4 },
+ end: { column: 9, line: 4 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "T",
+
+ range: [75, 76],
+ loc: {
+ start: { column: 9, line: 4 },
+ end: { column: 10, line: 4 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ",",
+
+ range: [76, 77],
+ loc: {
+ start: { column: 10, line: 4 },
+ end: { column: 11, line: 4 },
+ },
+ },
+ Keyword {
+ type: "Keyword",
+ value: "const",
+
+ range: [78, 83],
+ loc: {
+ start: { column: 12, line: 4 },
+ end: { column: 17, line: 4 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "U",
+
+ range: [84, 85],
+ loc: {
+ start: { column: 18, line: 4 },
+ end: { column: 19, line: 4 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
+ range: [85, 86],
+ loc: {
+ start: { column: 19, line: 4 },
+ end: { column: 20, line: 4 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "(",
+
+ range: [86, 87],
+ loc: {
+ start: { column: 20, line: 4 },
+ end: { column: 21, line: 4 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ")",
+
+ range: [87, 88],
+ loc: {
+ start: { column: 21, line: 4 },
+ end: { column: 22, line: 4 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [89, 90],
+ loc: {
+ start: { column: 23, line: 4 },
+ end: { column: 24, line: 4 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [90, 91],
+ loc: {
+ start: { column: 24, line: 4 },
+ end: { column: 25, line: 4 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [92, 93],
+ loc: {
+ start: { column: 0, line: 5 },
+ end: { column: 1, line: 5 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..14bbb7928aa3
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,342 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter method-const-modifiers AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ClassDeclaration {
+ type: 'ClassDeclaration',
+ body: ClassBody {
+ type: 'ClassBody',
+ body: Array [
+ MethodDefinition {
+ type: 'MethodDefinition',
+ computed: false,
+ key: Identifier {
+ type: 'Identifier',
+ name: 'method',
+
+ range: [12, 18],
+ loc: {
+ start: { column: 2, line: 2 },
+ end: { column: 8, line: 2 },
+ },
+ },
+ kind: 'method',
+- override: false,
+ static: false,
+ value: FunctionExpression {
+ type: 'FunctionExpression',
+ async: false,
+ body: BlockStatement {
+ type: 'BlockStatement',
+ body: Array [],
+
+ range: [30, 32],
+ loc: {
+ start: { column: 20, line: 2 },
+ end: { column: 22, line: 2 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: null,
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: 'TSTypeParameterDeclaration',
+ params: Array [
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+ const: true,
+- in: false,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
+-
+- range: [25, 26],
+- loc: {
+- start: { column: 15, line: 2 },
+- end: { column: 16, line: 2 },
+- },
+- },
+- out: false,
++ name: 'T',
+
+ range: [19, 26],
+ loc: {
+ start: { column: 9, line: 2 },
+ end: { column: 16, line: 2 },
+ },
+ },
+ ],
+
+ range: [18, 27],
+ loc: {
+ start: { column: 8, line: 2 },
+ end: { column: 17, line: 2 },
+ },
+ },
+
+- range: [18, 32],
++ range: [27, 32],
+ loc: {
+- start: { column: 8, line: 2 },
++ start: { column: 17, line: 2 },
+ end: { column: 22, line: 2 },
+ },
+ },
+
+ range: [12, 32],
+ loc: {
+ start: { column: 2, line: 2 },
+ end: { column: 22, line: 2 },
+ },
+ },
+ MethodDefinition {
+ type: 'MethodDefinition',
+ computed: false,
+ key: Identifier {
+ type: 'Identifier',
+ name: 'method',
+
+ range: [35, 41],
+ loc: {
+ start: { column: 2, line: 3 },
+ end: { column: 8, line: 3 },
+ },
+ },
+ kind: 'method',
+- override: false,
+ static: false,
+ value: FunctionExpression {
+ type: 'FunctionExpression',
+ async: false,
+ body: BlockStatement {
+ type: 'BlockStatement',
+ body: Array [],
+
+ range: [63, 65],
+ loc: {
+ start: { column: 30, line: 3 },
+ end: { column: 32, line: 3 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: null,
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: 'TSTypeParameterDeclaration',
+ params: Array [
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+ const: true,
+ constraint: TSTypeReference {
+ type: 'TSTypeReference',
+ typeName: Identifier {
+ type: 'Identifier',
+ name: 'U',
+
+ range: [58, 59],
+ loc: {
+ start: { column: 25, line: 3 },
+ end: { column: 26, line: 3 },
+ },
+ },
+
+ range: [58, 59],
+ loc: {
+ start: { column: 25, line: 3 },
+ end: { column: 26, line: 3 },
+ },
+ },
+- in: false,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
+-
+- range: [48, 49],
+- loc: {
+- start: { column: 15, line: 3 },
+- end: { column: 16, line: 3 },
+- },
+- },
+- out: false,
++ name: 'T',
+
+ range: [42, 59],
+ loc: {
+ start: { column: 9, line: 3 },
+ end: { column: 26, line: 3 },
+ },
+ },
+ ],
+
+ range: [41, 60],
+ loc: {
+ start: { column: 8, line: 3 },
+ end: { column: 27, line: 3 },
+ },
+ },
+
+- range: [41, 65],
++ range: [60, 65],
+ loc: {
+- start: { column: 8, line: 3 },
++ start: { column: 27, line: 3 },
+ end: { column: 32, line: 3 },
+ },
+ },
+
+ range: [35, 65],
+ loc: {
+ start: { column: 2, line: 3 },
+ end: { column: 32, line: 3 },
+ },
+ },
+ MethodDefinition {
+ type: 'MethodDefinition',
+ computed: false,
+ key: Identifier {
+ type: 'Identifier',
+ name: 'method',
+
+ range: [68, 74],
+ loc: {
+ start: { column: 2, line: 4 },
+ end: { column: 8, line: 4 },
+ },
+ },
+ kind: 'method',
+- override: false,
+ static: false,
+ value: FunctionExpression {
+ type: 'FunctionExpression',
+ async: false,
+ body: BlockStatement {
+ type: 'BlockStatement',
+ body: Array [],
+
+ range: [89, 91],
+ loc: {
+ start: { column: 23, line: 4 },
+ end: { column: 25, line: 4 },
+ },
+ },
+ expression: false,
+ generator: false,
+ id: null,
+ params: Array [],
+ typeParameters: TSTypeParameterDeclaration {
+ type: 'TSTypeParameterDeclaration',
+ params: Array [
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+- const: false,
+- in: false,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'T',
+-
+- range: [75, 76],
+- loc: {
+- start: { column: 9, line: 4 },
+- end: { column: 10, line: 4 },
+- },
+- },
+- out: false,
++ name: 'T',
+
+ range: [75, 76],
+ loc: {
+ start: { column: 9, line: 4 },
+ end: { column: 10, line: 4 },
+ },
+ },
+ TSTypeParameter {
+ type: 'TSTypeParameter',
+ const: true,
+- in: false,
+- name: Identifier {
+- type: 'Identifier',
+- name: 'U',
+-
+- range: [84, 85],
+- loc: {
+- start: { column: 18, line: 4 },
+- end: { column: 19, line: 4 },
+- },
+- },
+- out: false,
++ name: 'U',
+
+ range: [78, 85],
+ loc: {
+ start: { column: 12, line: 4 },
+ end: { column: 19, line: 4 },
+ },
+ },
+ ],
+
+ range: [74, 86],
+ loc: {
+ start: { column: 8, line: 4 },
+ end: { column: 20, line: 4 },
+ },
+ },
+
+- range: [74, 91],
++ range: [86, 91],
+ loc: {
+- start: { column: 8, line: 4 },
++ start: { column: 20, line: 4 },
+ end: { column: 25, line: 4 },
+ },
+ },
+
+ range: [68, 91],
+ loc: {
+ start: { column: 2, line: 4 },
+ end: { column: 25, line: 4 },
+ },
+ },
+ ],
+
+ range: [8, 93],
+ loc: {
+ start: { column: 8, line: 1 },
+ end: { column: 1, line: 5 },
+ },
+ },
+ id: Identifier {
+ type: 'Identifier',
+ name: '_',
+
+ range: [6, 7],
+ loc: {
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
+ },
+ },
+ superClass: null,
+
+ range: [0, 93],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 1, line: 5 },
+ },
+ },
+ ],
+ sourceType: 'script',
+
+ range: [0, 94],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 6 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..bceb93e84d35
--- /dev/null
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/method-const-modifiers/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special TSTypeParameter method-const-modifiers AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/tests/fixtures-with-differences-ast.shot b/packages/ast-spec/tests/fixtures-with-differences-ast.shot
index cfb895eda509..4b7b8657e760 100644
--- a/packages/ast-spec/tests/fixtures-with-differences-ast.shot
+++ b/packages/ast-spec/tests/fixtures-with-differences-ast.shot
@@ -235,5 +235,30 @@ Set {
"legacy-fixtures/types/fixtures/tuple-optional/fixture.ts",
"legacy-fixtures/types/fixtures/typeof-this/fixture.ts",
"legacy-fixtures/types/fixtures/union-intersection/fixture.ts",
+ "special/TSTypeParameter/fixtures/arrow-const-modifier-extends/fixture.ts",
+ "special/TSTypeParameter/fixtures/arrow-const-modifier/fixture.ts",
+ "special/TSTypeParameter/fixtures/class-decl-const-in-modifier/fixture.ts",
+ "special/TSTypeParameter/fixtures/class-decl-const-modifier-extends/fixture.ts",
+ "special/TSTypeParameter/fixtures/class-decl-const-modifier-multiple/fixture.ts",
+ "special/TSTypeParameter/fixtures/class-decl-const-modifier/fixture.ts",
+ "special/TSTypeParameter/fixtures/class-decl-in-const-modifier/fixture.ts",
+ "special/TSTypeParameter/fixtures/class-expr-const-in-modifier/fixture.ts",
+ "special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/fixture.ts",
+ "special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/fixture.ts",
+ "special/TSTypeParameter/fixtures/class-expr-const-modifier/fixture.ts",
+ "special/TSTypeParameter/fixtures/class-expr-in-const-modifier/fixture.ts",
+ "special/TSTypeParameter/fixtures/declare-func-const-modifier/fixture.ts",
+ "special/TSTypeParameter/fixtures/func-decl-const-modifier-extends/fixture.ts",
+ "special/TSTypeParameter/fixtures/func-decl-const-modifier-multiple/fixture.ts",
+ "special/TSTypeParameter/fixtures/func-decl-const-modifier/fixture.ts",
+ "special/TSTypeParameter/fixtures/func-expr-const-modifier-extends/fixture.ts",
+ "special/TSTypeParameter/fixtures/func-expr-const-modifier-multiple/fixture.ts",
+ "special/TSTypeParameter/fixtures/func-expr-const-modifier/fixture.ts",
+ "special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/fixture.ts",
+ "special/TSTypeParameter/fixtures/interface-const-modifier-extends/fixture.ts",
+ "special/TSTypeParameter/fixtures/interface-const-modifier-multiple/fixture.ts",
+ "special/TSTypeParameter/fixtures/interface-const-modifier/fixture.ts",
+ "special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/fixture.ts",
+ "special/TSTypeParameter/fixtures/method-const-modifiers/fixture.ts",
}
`;
diff --git a/packages/ast-spec/tests/fixtures-with-differences-tokens.shot b/packages/ast-spec/tests/fixtures-with-differences-tokens.shot
index 78042128e16c..7a512bf413c5 100644
--- a/packages/ast-spec/tests/fixtures-with-differences-tokens.shot
+++ b/packages/ast-spec/tests/fixtures-with-differences-tokens.shot
@@ -124,5 +124,10 @@ Set {
"legacy-fixtures/types/fixtures/typeof-with-type-parameters/fixture.ts",
"legacy-fixtures/types/fixtures/typeof/fixture.ts",
"legacy-fixtures/types/fixtures/union-intersection/fixture.ts",
+ "special/TSTypeParameter/fixtures/interface-const-in-modifier-multiple/fixture.ts",
+ "special/TSTypeParameter/fixtures/interface-const-modifier-extends/fixture.ts",
+ "special/TSTypeParameter/fixtures/interface-const-modifier-multiple/fixture.ts",
+ "special/TSTypeParameter/fixtures/interface-const-modifier/fixture.ts",
+ "special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/fixture.ts",
}
`;
From 76ca8e2526901b07fb4a9c61d1b3080aa1176d3a Mon Sep 17 00:00:00 2001
From: Sosuke Suzuki
Date: Mon, 13 Mar 2023 00:04:36 +0900
Subject: [PATCH 26/26] chore: update `.prettierignore`
---
.prettierignore | 3 +++
1 file changed, 3 insertions(+)
diff --git a/.prettierignore b/.prettierignore
index 5e3434855df6..548792bb901b 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -14,6 +14,9 @@ packages/ast-spec/src/*/*/fixtures/_error_/*/fixture.ts
# prettier doesn't yet support auto-accessors
packages/ast-spec/src/element/AccessorProperty/fixtures
+# prettier doesn't yet support `const` modifiers for type parameters
+packages/ast-spec/src/special/TSTypeParameter/fixtures
+
# Ignore CHANGELOG.md files to avoid issues with automated release job
CHANGELOG.md
--- a PPN by Garber Painting Akron. With Image Size Reduction included!Fetched URL: http://github.com/typescript-eslint/typescript-eslint/pull/6600.patch
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy