diff --git a/.husky/.gitignore b/.husky/.gitignore
index c9cdc63b0701..31354ec13899 100644
--- a/.husky/.gitignore
+++ b/.husky/.gitignore
@@ -1 +1 @@
-_
\ No newline at end of file
+_
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7cfdbf8471aa..4e18df409baa 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,30 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [4.16.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.2...v4.16.0) (2021-03-01)
+
+
+### Bug Fixes
+
+* **eslint-plugin:** [consistent-indexed-object-style] do not autofix if interface has extends ([#3009](https://github.com/typescript-eslint/typescript-eslint/issues/3009)) ([b0475af](https://github.com/typescript-eslint/typescript-eslint/commit/b0475aff3920d748fa74b5a6d8a7ad5dd731aec4))
+* **eslint-plugin:** [no-implied-eval] handle conditional expression ([#3125](https://github.com/typescript-eslint/typescript-eslint/issues/3125)) ([8c65d30](https://github.com/typescript-eslint/typescript-eslint/commit/8c65d30a225a3b99e80326961d0cb0c8189b039c))
+* **eslint-plugin:** [no-unused-vars] don't report nested module declaration ([#3119](https://github.com/typescript-eslint/typescript-eslint/issues/3119)) ([4ca5888](https://github.com/typescript-eslint/typescript-eslint/commit/4ca58886adf3fc0fe31c263559990c8a534205f9))
+* **eslint-plugin:** [prefer-function-type] apply existing comments to the fixed code ([#3094](https://github.com/typescript-eslint/typescript-eslint/issues/3094)) ([c32f803](https://github.com/typescript-eslint/typescript-eslint/commit/c32f803d4480acf5ffc88e308b4243e5185c4f48))
+* **eslint-plugin:** [unbound-method] allow `super` expressions in `this` assignments ([#3010](https://github.com/typescript-eslint/typescript-eslint/issues/3010)) ([c65a139](https://github.com/typescript-eslint/typescript-eslint/commit/c65a1391be15bbcf3ae293b1c53686703883d546))
+* **scope-manager:** update libs for typescript 4.2 ([#3118](https://github.com/typescript-eslint/typescript-eslint/issues/3118)) ([0336c79](https://github.com/typescript-eslint/typescript-eslint/commit/0336c798c9502fc250d2eaa045661950da55e52f))
+
+
+### Features
+
+* TypeScript 4.2 syntax support ([#3112](https://github.com/typescript-eslint/typescript-eslint/issues/3112)) ([2ebfb21](https://github.com/typescript-eslint/typescript-eslint/commit/2ebfb21ba6c88c793cfbd0e231e5803b2381694c))
+* **eslint-plugin:** [member-delimiter-style] Add an option 'multilineDetection' to treat types and interfaces as single line if the last member ends on the same line as the closing bracket ([#2970](https://github.com/typescript-eslint/typescript-eslint/issues/2970)) ([cf86f42](https://github.com/typescript-eslint/typescript-eslint/commit/cf86f427186d58b0fce4bb3ff9571c4301babeb3))
+* **eslint-plugin:** [prom-func-async] report only function head ([#2872](https://github.com/typescript-eslint/typescript-eslint/issues/2872)) ([25f459c](https://github.com/typescript-eslint/typescript-eslint/commit/25f459cdc4f38d44b48554e04cfa1676538ccdfb))
+* **typescript-estree:** throw custom error instead of plain object ([#3011](https://github.com/typescript-eslint/typescript-eslint/issues/3011)) ([ae14bf5](https://github.com/typescript-eslint/typescript-eslint/commit/ae14bf55fe31b0eb982ba17333e4aac550d10342))
+
+
+
+
+
## [4.15.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.1...v4.15.2) (2021-02-22)
diff --git a/README.md b/README.md
index 93cacd404622..e44cd7102461 100644
--- a/README.md
+++ b/README.md
@@ -233,7 +233,7 @@ The latest version under the `canary` tag **(latest commit to master)** is:
## Supported TypeScript Version
-**The version range of TypeScript currently supported by this parser is `>=3.3.1 <4.2.0`.**
+**The version range of TypeScript currently supported by this parser is `>=3.3.1 <4.3.0`.**
These versions are what we test against.
diff --git a/docs/getting-started/linting/FAQ.md b/docs/getting-started/linting/FAQ.md
index 47e5a221155c..e4ea1f19130f 100644
--- a/docs/getting-started/linting/FAQ.md
+++ b/docs/getting-started/linting/FAQ.md
@@ -187,11 +187,24 @@ Instead, our tooling exists to **_augment_** TypeScript's built in checks with l
The `no-undef` lint rule does not use TypeScript to determine the global variables that exist - instead, it relies upon ESLint's configuration.
-You can [manually define the set of allowed `globals` in your ESLint config](https://eslint.org/docs/user-guide/configuring/language-options#specifying-globals), and/or you can use one of the [pre-defined environment (`env`) configurations](https://eslint.org/docs/user-guide/configuring/language-options#specifying-environments).
+We strongly recommend that you do not use the `no-undef` lint rule on TypeScript projects. The checks it provides are already provided by TypeScript without the need for configuration - TypeScript just does this significantly better.
As of our v4.0.0 release, this also applies to types. If you use global types from a 3rd party package (i.e. anything from an `@types` package), then you will have to configure ESLint appropriately to define these global types. For example; the `JSX` namespace from `@types/react` is a global 3rd party type that you must define in your ESLint config.
-We strongly recommend that you do not use the `no-undef` lint rule on TypeScript projects. The checks it provides are already provided by TypeScript without the need for configuration - TypeScript just does this significantly better.
+Note, that for a mixed project including JavaScript and TypeScript, the `no-undef` rule (like any role) can be turned off for TypeScript files alone by adding an `overrides` section to .eslintrc.json:
+
+```json
+ "overrides": [
+ {
+ "files": ["*.ts"],
+ "rules": {
+ "no-undef": "off"
+ }
+ }
+ ]
+```
+
+If you choose to leave on the ESLint `no-undef` lint rule, you can [manually define the set of allowed `globals` in your ESLint config](https://eslint.org/docs/user-guide/configuring/language-options#specifying-globals), and/or you can use one of the [pre-defined environment (`env`) configurations](https://eslint.org/docs/user-guide/configuring/language-options#specifying-environments).
diff --git a/docs/getting-started/linting/README.md b/docs/getting-started/linting/README.md
index 63163d9a6fd8..655974fff4e2 100644
--- a/docs/getting-started/linting/README.md
+++ b/docs/getting-started/linting/README.md
@@ -121,6 +121,8 @@ If you use [`prettier`](https://www.npmjs.com/package/prettier), there is also a
Using this config is as simple as adding it to the end of your `extends`:
+> Note: [Since version `8.0.0` of `eslint-config-prettier`](https://github.com/prettier/eslint-config-prettier/blob/main/CHANGELOG.md#version-800-2021-02-21), all you need to extend is `'prettier'`. That includes all plugins. Otherwise for `<8.0.0`, you need include `'prettier/@typescript-eslint'`.
+
```diff
module.exports = {
root: true,
@@ -132,7 +134,6 @@ Using this config is as simple as adding it to the end of your `extends`:
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
+ 'prettier',
-+ 'prettier/@typescript-eslint',
],
};
```
diff --git a/lerna.json b/lerna.json
index 0050e613058f..8a264994d358 100644
--- a/lerna.json
+++ b/lerna.json
@@ -1,5 +1,5 @@
{
- "version": "4.15.2",
+ "version": "4.16.0",
"npmClient": "yarn",
"useWorkspaces": true,
"stream": true
diff --git a/package.json b/package.json
index 8be3c9f9dd77..a7a9b8fc318c 100644
--- a/package.json
+++ b/package.json
@@ -112,9 +112,9 @@
"ts-jest": "^26.5.1",
"ts-node": "^9.0.0",
"tslint": "^6.1.3",
- "typescript": ">=3.3.1 <4.2.0"
+ "typescript": ">=3.3.1 <4.3.0"
},
"resolutions": {
- "typescript": "4.1.5"
+ "typescript": "4.2.2"
}
}
diff --git a/packages/eslint-plugin-internal/CHANGELOG.md b/packages/eslint-plugin-internal/CHANGELOG.md
index 791472ff0f27..c040c895a885 100644
--- a/packages/eslint-plugin-internal/CHANGELOG.md
+++ b/packages/eslint-plugin-internal/CHANGELOG.md
@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [4.16.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.2...v4.16.0) (2021-03-01)
+
+**Note:** Version bump only for package @typescript-eslint/eslint-plugin-internal
+
+
+
+
+
## [4.15.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.1...v4.15.2) (2021-02-22)
**Note:** Version bump only for package @typescript-eslint/eslint-plugin-internal
diff --git a/packages/eslint-plugin-internal/package.json b/packages/eslint-plugin-internal/package.json
index 2b61e189358c..cc49519d4389 100644
--- a/packages/eslint-plugin-internal/package.json
+++ b/packages/eslint-plugin-internal/package.json
@@ -1,6 +1,6 @@
{
"name": "@typescript-eslint/eslint-plugin-internal",
- "version": "4.15.2",
+ "version": "4.16.0",
"private": true,
"main": "dist/index.js",
"scripts": {
@@ -14,7 +14,7 @@
},
"dependencies": {
"@types/prettier": "*",
- "@typescript-eslint/experimental-utils": "4.15.2",
+ "@typescript-eslint/experimental-utils": "4.16.0",
"prettier": "*"
}
}
diff --git a/packages/eslint-plugin-tslint/CHANGELOG.md b/packages/eslint-plugin-tslint/CHANGELOG.md
index 1f434ac3c804..76852cd4d124 100644
--- a/packages/eslint-plugin-tslint/CHANGELOG.md
+++ b/packages/eslint-plugin-tslint/CHANGELOG.md
@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [4.16.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.2...v4.16.0) (2021-03-01)
+
+**Note:** Version bump only for package @typescript-eslint/eslint-plugin-tslint
+
+
+
+
+
## [4.15.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.1...v4.15.2) (2021-02-22)
**Note:** Version bump only for package @typescript-eslint/eslint-plugin-tslint
diff --git a/packages/eslint-plugin-tslint/package.json b/packages/eslint-plugin-tslint/package.json
index 145bcde18fa7..4a8b5dc1b2bf 100644
--- a/packages/eslint-plugin-tslint/package.json
+++ b/packages/eslint-plugin-tslint/package.json
@@ -1,6 +1,6 @@
{
"name": "@typescript-eslint/eslint-plugin-tslint",
- "version": "4.15.2",
+ "version": "4.16.0",
"main": "dist/index.js",
"typings": "src/index.ts",
"description": "TSLint wrapper plugin for ESLint",
@@ -38,7 +38,7 @@
"typecheck": "tsc -p tsconfig.json --noEmit"
},
"dependencies": {
- "@typescript-eslint/experimental-utils": "4.15.2",
+ "@typescript-eslint/experimental-utils": "4.16.0",
"lodash": "^4.17.15"
},
"peerDependencies": {
@@ -48,6 +48,6 @@
},
"devDependencies": {
"@types/lodash": "*",
- "@typescript-eslint/parser": "4.15.2"
+ "@typescript-eslint/parser": "4.16.0"
}
}
diff --git a/packages/eslint-plugin/CHANGELOG.md b/packages/eslint-plugin/CHANGELOG.md
index a9235398567e..ae1721d461ef 100644
--- a/packages/eslint-plugin/CHANGELOG.md
+++ b/packages/eslint-plugin/CHANGELOG.md
@@ -3,6 +3,27 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [4.16.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.2...v4.16.0) (2021-03-01)
+
+
+### Bug Fixes
+
+* **eslint-plugin:** [consistent-indexed-object-style] do not autofix if interface has extends ([#3009](https://github.com/typescript-eslint/typescript-eslint/issues/3009)) ([b0475af](https://github.com/typescript-eslint/typescript-eslint/commit/b0475aff3920d748fa74b5a6d8a7ad5dd731aec4))
+* **eslint-plugin:** [no-implied-eval] handle conditional expression ([#3125](https://github.com/typescript-eslint/typescript-eslint/issues/3125)) ([8c65d30](https://github.com/typescript-eslint/typescript-eslint/commit/8c65d30a225a3b99e80326961d0cb0c8189b039c))
+* **eslint-plugin:** [no-unused-vars] don't report nested module declaration ([#3119](https://github.com/typescript-eslint/typescript-eslint/issues/3119)) ([4ca5888](https://github.com/typescript-eslint/typescript-eslint/commit/4ca58886adf3fc0fe31c263559990c8a534205f9))
+* **eslint-plugin:** [prefer-function-type] apply existing comments to the fixed code ([#3094](https://github.com/typescript-eslint/typescript-eslint/issues/3094)) ([c32f803](https://github.com/typescript-eslint/typescript-eslint/commit/c32f803d4480acf5ffc88e308b4243e5185c4f48))
+* **eslint-plugin:** [unbound-method] allow `super` expressions in `this` assignments ([#3010](https://github.com/typescript-eslint/typescript-eslint/issues/3010)) ([c65a139](https://github.com/typescript-eslint/typescript-eslint/commit/c65a1391be15bbcf3ae293b1c53686703883d546))
+
+
+### Features
+
+* **eslint-plugin:** [member-delimiter-style] Add an option 'multilineDetection' to treat types and interfaces as single line if the last member ends on the same line as the closing bracket ([#2970](https://github.com/typescript-eslint/typescript-eslint/issues/2970)) ([cf86f42](https://github.com/typescript-eslint/typescript-eslint/commit/cf86f427186d58b0fce4bb3ff9571c4301babeb3))
+* **eslint-plugin:** [prom-func-async] report only function head ([#2872](https://github.com/typescript-eslint/typescript-eslint/issues/2872)) ([25f459c](https://github.com/typescript-eslint/typescript-eslint/commit/25f459cdc4f38d44b48554e04cfa1676538ccdfb))
+
+
+
+
+
## [4.15.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.1...v4.15.2) (2021-02-22)
diff --git a/packages/eslint-plugin/docs/rules/member-delimiter-style.md b/packages/eslint-plugin/docs/rules/member-delimiter-style.md
index ed1b09577563..c6f7ca470002 100644
--- a/packages/eslint-plugin/docs/rules/member-delimiter-style.md
+++ b/packages/eslint-plugin/docs/rules/member-delimiter-style.md
@@ -72,6 +72,7 @@ type Config = BaseConfig & {
interface?: BaseConfig;
typeLiteral?: BaseConfig;
};
+ multilineDetection?: 'brackets' | 'last-member';
};
```
@@ -86,7 +87,8 @@ Default config:
"singleline": {
"delimiter": "semi",
"requireLast": false
- }
+ },
+ "multilineDetection": "brackets"
}
```
@@ -94,6 +96,11 @@ Default config:
`singleline` config only applies to single line `interface`/`type` definitions.
The two configs are entirely separate, and do not effect one another.
+`multilineDetection` determines what counts as multiline
+
+- `"brackets"` (default) any newlines in the type or interface make it multiline.
+- `"last-member"` if the last member of the interface is on the same line as the last bracket, it is counted as a single line.
+
### `delimiter`
Accepts three values (or two for `singleline`):
diff --git a/packages/eslint-plugin/docs/rules/naming-convention.md b/packages/eslint-plugin/docs/rules/naming-convention.md
index fc4d914e449f..ff9f8e79a3cf 100644
--- a/packages/eslint-plugin/docs/rules/naming-convention.md
+++ b/packages/eslint-plugin/docs/rules/naming-convention.md
@@ -320,8 +320,8 @@ To clearly spell it out:
- (3) is tested first because it has `types` and is an individual selector.
- (2) is tested next because it is an individual selector.
-- (1) is tested next as it is a grouped selector.
-- (4) is tested last as it is the base default selector.
+- (4) is tested next as it is a grouped selector.
+- (1) is tested last as it is the base default selector.
Its worth noting that whilst this order is applied, all selectors may not run on a name.
This is explained in ["How does the rule evaluate a name's format?"](#how-does-the-rule-evaluate-a-names-format)
diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json
index afea64deacba..3f20831ff502 100644
--- a/packages/eslint-plugin/package.json
+++ b/packages/eslint-plugin/package.json
@@ -1,6 +1,6 @@
{
"name": "@typescript-eslint/eslint-plugin",
- "version": "4.15.2",
+ "version": "4.16.0",
"description": "TypeScript plugin for ESLint",
"keywords": [
"eslint",
@@ -42,8 +42,8 @@
"typecheck": "tsc -p tsconfig.json --noEmit"
},
"dependencies": {
- "@typescript-eslint/experimental-utils": "4.15.2",
- "@typescript-eslint/scope-manager": "4.15.2",
+ "@typescript-eslint/experimental-utils": "4.16.0",
+ "@typescript-eslint/scope-manager": "4.16.0",
"debug": "^4.1.1",
"functional-red-black-tree": "^1.0.1",
"lodash": "^4.17.15",
diff --git a/packages/eslint-plugin/src/rules/consistent-indexed-object-style.ts b/packages/eslint-plugin/src/rules/consistent-indexed-object-style.ts
index bd48718c68b5..a30102dd123e 100644
--- a/packages/eslint-plugin/src/rules/consistent-indexed-object-style.ts
+++ b/packages/eslint-plugin/src/rules/consistent-indexed-object-style.ts
@@ -2,6 +2,7 @@ import { createRule } from '../util';
import {
AST_NODE_TYPES,
TSESTree,
+ TSESLint,
} from '@typescript-eslint/experimental-utils';
type MessageIds = 'preferRecord' | 'preferIndexSignature';
@@ -66,6 +67,7 @@ export default createRule({
node: TSESTree.Node,
prefix: string,
postfix: string,
+ safeFix = true,
): void {
if (members.length !== 1) {
return;
@@ -98,14 +100,16 @@ export default createRule({
context.report({
node,
messageId: 'preferRecord',
- fix(fixer) {
- const key = sourceCode.getText(keyType.typeAnnotation);
- const value = sourceCode.getText(valueType.typeAnnotation);
- const record = member.readonly
- ? `Readonly>`
- : `Record<${key}, ${value}>`;
- return fixer.replaceText(node, `${prefix}${record}${postfix}`);
- },
+ fix: safeFix
+ ? (fixer): TSESLint.RuleFix => {
+ const key = sourceCode.getText(keyType.typeAnnotation);
+ const value = sourceCode.getText(valueType.typeAnnotation);
+ const record = member.readonly
+ ? `Readonly>`
+ : `Record<${key}, ${value}>`;
+ return fixer.replaceText(node, `${prefix}${record}${postfix}`);
+ }
+ : null,
});
}
@@ -128,6 +132,7 @@ export default createRule({
node,
`type ${node.id.name}${genericTypes} = `,
';',
+ !node.extends?.length,
);
},
};
diff --git a/packages/eslint-plugin/src/rules/member-delimiter-style.ts b/packages/eslint-plugin/src/rules/member-delimiter-style.ts
index 75381a8df2cb..64147b37cf2a 100644
--- a/packages/eslint-plugin/src/rules/member-delimiter-style.ts
+++ b/packages/eslint-plugin/src/rules/member-delimiter-style.ts
@@ -21,6 +21,7 @@ type Config = BaseOptions & {
typeLiteral?: BaseOptions;
interface?: BaseOptions;
};
+ multilineDetection?: 'brackets' | 'last-member';
};
type Options = [Config];
type MessageIds =
@@ -82,6 +83,9 @@ export default util.createRule({
},
additionalProperties: false,
},
+ multilineDetection: {
+ enum: ['brackets', 'last-member'],
+ },
}),
additionalProperties: false,
},
@@ -97,6 +101,7 @@ export default util.createRule({
delimiter: 'semi',
requireLast: false,
},
+ multilineDetection: 'brackets',
},
],
create(context, [options]) {
@@ -215,11 +220,21 @@ export default util.createRule({
function checkMemberSeparatorStyle(
node: TSESTree.TSInterfaceBody | TSESTree.TSTypeLiteral,
): void {
- const isSingleLine = node.loc.start.line === node.loc.end.line;
-
const members =
node.type === AST_NODE_TYPES.TSInterfaceBody ? node.body : node.members;
+ let isSingleLine = node.loc.start.line === node.loc.end.line;
+ if (
+ options.multilineDetection === 'last-member' &&
+ !isSingleLine &&
+ members.length > 0
+ ) {
+ const lastMember = members[members.length - 1];
+ if (lastMember.loc.end.line === node.loc.end.line) {
+ isSingleLine = true;
+ }
+ }
+
const typeOpts =
node.type === AST_NODE_TYPES.TSInterfaceBody
? interfaceOptions
diff --git a/packages/eslint-plugin/src/rules/no-implied-eval.ts b/packages/eslint-plugin/src/rules/no-implied-eval.ts
index 25eac2adbc65..c7caf2d4bef4 100644
--- a/packages/eslint-plugin/src/rules/no-implied-eval.ts
+++ b/packages/eslint-plugin/src/rules/no-implied-eval.ts
@@ -108,6 +108,7 @@ export default util.createRule({
case AST_NODE_TYPES.MemberExpression:
case AST_NODE_TYPES.Identifier:
+ case AST_NODE_TYPES.ConditionalExpression:
return isFunctionType(node);
case AST_NODE_TYPES.CallExpression:
diff --git a/packages/eslint-plugin/src/rules/no-unused-vars.ts b/packages/eslint-plugin/src/rules/no-unused-vars.ts
index 79709e1df1ee..2e6633afc57f 100644
--- a/packages/eslint-plugin/src/rules/no-unused-vars.ts
+++ b/packages/eslint-plugin/src/rules/no-unused-vars.ts
@@ -264,6 +264,23 @@ export default util.createRule({
markDeclarationChildAsUsed(node);
},
+ // module declaration in module declaration should not report unused vars error
+ // this is workaround as this change should be done in better way
+ 'TSModuleDeclaration > TSModuleDeclaration'(
+ node: TSESTree.TSModuleDeclaration,
+ ): void {
+ if (node.id.type === AST_NODE_TYPES.Identifier) {
+ let scope = context.getScope();
+ if (scope.upper) {
+ scope = scope.upper;
+ }
+ const superVar = scope.set.get(node.id.name);
+ if (superVar) {
+ superVar.eslintUsed = true;
+ }
+ }
+ },
+
// children of a namespace that is a child of a declared namespace are auto-exported
[ambientDeclarationSelector(
'TSModuleDeclaration[declare = true] > TSModuleBlock TSModuleDeclaration > TSModuleBlock',
diff --git a/packages/eslint-plugin/src/rules/prefer-function-type.ts b/packages/eslint-plugin/src/rules/prefer-function-type.ts
index f6aad463930e..761e8bc98eb9 100644
--- a/packages/eslint-plugin/src/rules/prefer-function-type.ts
+++ b/packages/eslint-plugin/src/rules/prefer-function-type.ts
@@ -1,6 +1,7 @@
import {
AST_NODE_TYPES,
AST_TOKEN_TYPES,
+ TSESLint,
TSESTree,
} from '@typescript-eslint/experimental-utils';
import * as util from '../util';
@@ -69,46 +70,6 @@ export default util.createRule({
}
}
- /**
- * @param call The call signature causing the diagnostic
- * @param parent The parent of the call
- * @returns The suggestion to report
- */
- function renderSuggestion(
- call:
- | TSESTree.TSCallSignatureDeclaration
- | TSESTree.TSConstructSignatureDeclaration,
- parent: TSESTree.Node,
- ): string {
- const start = call.range[0];
- const colonPos = call.returnType!.range[0] - start;
- const text = sourceCode.getText().slice(start, call.range[1]);
-
- let suggestion = `${text.slice(0, colonPos)} =>${text.slice(
- colonPos + 1,
- )}`;
-
- const lastChar = suggestion.endsWith(';') ? ';' : '';
- if (lastChar) {
- suggestion = suggestion.slice(0, -1);
- }
- if (shouldWrapSuggestion(parent.parent)) {
- suggestion = `(${suggestion})`;
- }
- if (parent.type === AST_NODE_TYPES.TSInterfaceDeclaration) {
- if (typeof parent.typeParameters !== 'undefined') {
- return `type ${sourceCode
- .getText()
- .slice(
- parent.id.range[0],
- parent.typeParameters.range[1],
- )} = ${suggestion}${lastChar}`;
- }
- return `type ${parent.id.name} = ${suggestion}${lastChar}`;
- }
- return suggestion;
- }
-
/**
* @param member The TypeElement being checked
* @param node The parent of member being checked
@@ -140,30 +101,97 @@ export default util.createRule({
});
return;
}
- const suggestion = renderSuggestion(member, node);
- const fixStart =
- node.type === AST_NODE_TYPES.TSTypeLiteral
- ? node.range[0]
- : sourceCode
- .getTokens(node)
- .filter(
- token =>
- token.type === AST_TOKEN_TYPES.Keyword &&
- token.value === 'interface',
- )[0].range[0];
+ const fixable =
+ node.parent &&
+ node.parent.type === AST_NODE_TYPES.ExportDefaultDeclaration;
context.report({
node: member,
messageId: 'functionTypeOverCallableType',
data: {
literalOrInterface: phrases[node.type],
},
- fix(fixer) {
- return fixer.replaceTextRange(
- [fixStart, node.range[1]],
- suggestion,
- );
- },
+ fix: fixable
+ ? null
+ : (fixer): TSESLint.RuleFix[] => {
+ const fixes: TSESLint.RuleFix[] = [];
+ const start = member.range[0];
+ const colonPos = member.returnType!.range[0] - start;
+ const text = sourceCode.getText().slice(start, member.range[1]);
+ const comments = sourceCode
+ .getCommentsBefore(member)
+ .concat(sourceCode.getCommentsAfter(member));
+ let suggestion = `${text.slice(0, colonPos)} =>${text.slice(
+ colonPos + 1,
+ )}`;
+ const lastChar = suggestion.endsWith(';') ? ';' : '';
+ if (lastChar) {
+ suggestion = suggestion.slice(0, -1);
+ }
+ if (shouldWrapSuggestion(node.parent)) {
+ suggestion = `(${suggestion})`;
+ }
+
+ if (node.type === AST_NODE_TYPES.TSInterfaceDeclaration) {
+ if (typeof node.typeParameters !== 'undefined') {
+ suggestion = `type ${sourceCode
+ .getText()
+ .slice(
+ node.id.range[0],
+ node.typeParameters.range[1],
+ )} = ${suggestion}${lastChar}`;
+ } else {
+ suggestion = `type ${node.id.name} = ${suggestion}${lastChar}`;
+ }
+ }
+
+ const isParentExported =
+ node.parent &&
+ node.parent.type === AST_NODE_TYPES.ExportNamedDeclaration;
+
+ if (
+ node.type === AST_NODE_TYPES.TSInterfaceDeclaration &&
+ isParentExported
+ ) {
+ const commentsText = comments.reduce((text, comment) => {
+ return (
+ text +
+ (comment.type === AST_TOKEN_TYPES.Line
+ ? `//${comment.value}`
+ : `/*${comment.value}*/`) +
+ '\n'
+ );
+ }, '');
+ // comments should move before export and not between export and interface declaration
+ fixes.push(
+ fixer.insertTextBefore(
+ node.parent as TSESTree.Node | TSESTree.Token,
+ commentsText,
+ ),
+ );
+ } else {
+ comments.forEach(comment => {
+ let commentText =
+ comment.type === AST_TOKEN_TYPES.Line
+ ? `//${comment.value}`
+ : `/*${comment.value}*/`;
+ const isCommentOnTheSameLine =
+ comment.loc.start.line === member.loc.start.line;
+ if (!isCommentOnTheSameLine) {
+ commentText += '\n';
+ } else {
+ commentText += ' ';
+ }
+ suggestion = commentText + suggestion;
+ });
+ }
+
+ const fixStart = node.range[0];
+ fixes.push(
+ fixer.replaceTextRange([fixStart, node.range[1]], suggestion),
+ );
+ return fixes;
+ },
});
}
}
diff --git a/packages/eslint-plugin/src/rules/promise-function-async.ts b/packages/eslint-plugin/src/rules/promise-function-async.ts
index 00888c8f39fa..ce624be643c1 100644
--- a/packages/eslint-plugin/src/rules/promise-function-async.ts
+++ b/packages/eslint-plugin/src/rules/promise-function-async.ts
@@ -91,6 +91,7 @@ export default util.createRule({
]);
const parserServices = util.getParserServices(context);
const checker = parserServices.program.getTypeChecker();
+ const sourceCode = context.getSourceCode();
function validateNode(
node:
@@ -140,12 +141,14 @@ export default util.createRule({
return context.report({
messageId: 'missingAsync',
node,
+ loc: util.getFunctionHeadLoc(node, sourceCode),
});
}
context.report({
messageId: 'missingAsync',
node,
+ loc: util.getFunctionHeadLoc(node, sourceCode),
fix: fixer => {
if (
node.parent &&
diff --git a/packages/eslint-plugin/src/rules/unbound-method.ts b/packages/eslint-plugin/src/rules/unbound-method.ts
index 407d04c11ece..2ec66bc2aa33 100644
--- a/packages/eslint-plugin/src/rules/unbound-method.ts
+++ b/packages/eslint-plugin/src/rules/unbound-method.ts
@@ -305,7 +305,14 @@ function isSafeUse(node: TSESTree.Node): boolean {
return ['instanceof', '==', '!=', '===', '!=='].includes(parent.operator);
case AST_NODE_TYPES.AssignmentExpression:
- return parent.operator === '=' && node === parent.left;
+ return (
+ parent.operator === '=' &&
+ (node === parent.left ||
+ (node.type === AST_NODE_TYPES.MemberExpression &&
+ node.object.type === AST_NODE_TYPES.Super &&
+ parent.left.type === AST_NODE_TYPES.MemberExpression &&
+ parent.left.object.type === AST_NODE_TYPES.ThisExpression))
+ );
case AST_NODE_TYPES.ChainExpression:
case AST_NODE_TYPES.TSNonNullExpression:
diff --git a/packages/eslint-plugin/src/util/explicitReturnTypeUtils.ts b/packages/eslint-plugin/src/util/explicitReturnTypeUtils.ts
index d2c3a684c868..cd2f0b11826b 100644
--- a/packages/eslint-plugin/src/util/explicitReturnTypeUtils.ts
+++ b/packages/eslint-plugin/src/util/explicitReturnTypeUtils.ts
@@ -2,9 +2,9 @@ import {
TSESTree,
AST_NODE_TYPES,
TSESLint,
- AST_TOKEN_TYPES,
} from '@typescript-eslint/experimental-utils';
import { isTypeAssertion, isConstructor, isSetter } from './astUtils';
+import { getFunctionHeadLoc } from './getFunctionHeadLoc';
import { nullThrows, NullThrowsReasons } from './nullThrows';
type FunctionExpression =
@@ -12,65 +12,6 @@ type FunctionExpression =
| TSESTree.FunctionExpression;
type FunctionNode = FunctionExpression | TSESTree.FunctionDeclaration;
-/**
- * Creates a report location for the given function.
- * The location only encompasses the "start" of the function, and not the body
- *
- * eg.
- * function foo(args) {}
- * ^^^^^^^^^^^^^^^^^^
- *
- * get y(args) {}
- * ^^^^^^^^^^^
- *
- * const x = (args) => {}
- * ^^^^^^^^^
- */
-function getReporLoc(
- node: FunctionNode,
- sourceCode: TSESLint.SourceCode,
-): TSESTree.SourceLocation {
- /**
- * Returns start column position
- * @param node
- */
- function getLocStart(): TSESTree.LineAndColumnData {
- /* highlight method name */
- const parent = node.parent;
- if (
- parent &&
- (parent.type === AST_NODE_TYPES.MethodDefinition ||
- (parent.type === AST_NODE_TYPES.Property && parent.method))
- ) {
- return parent.loc.start;
- }
-
- return node.loc.start;
- }
-
- /**
- * Returns end column position
- * @param node
- */
- function getLocEnd(): TSESTree.LineAndColumnData {
- /* highlight `=>` */
- if (node.type === AST_NODE_TYPES.ArrowFunctionExpression) {
- return sourceCode.getTokenBefore(
- node.body,
- token =>
- token.type === AST_TOKEN_TYPES.Punctuator && token.value === '=>',
- )!.loc.end;
- }
-
- return sourceCode.getTokenBefore(node.body)!.loc.end;
- }
-
- return {
- start: getLocStart(),
- end: getLocEnd(),
- };
-}
-
/**
* Checks if a node is a variable declarator with a type annotation.
* ```
@@ -327,7 +268,7 @@ function checkFunctionReturnType(
return;
}
- report(getReporLoc(node, sourceCode));
+ report(getFunctionHeadLoc(node, sourceCode));
}
/**
diff --git a/packages/eslint-plugin/src/util/getFunctionHeadLoc.ts b/packages/eslint-plugin/src/util/getFunctionHeadLoc.ts
new file mode 100644
index 000000000000..dc18a832f948
--- /dev/null
+++ b/packages/eslint-plugin/src/util/getFunctionHeadLoc.ts
@@ -0,0 +1,79 @@
+import {
+ AST_NODE_TYPES,
+ AST_TOKEN_TYPES,
+ TSESLint,
+ TSESTree,
+} from '@typescript-eslint/experimental-utils';
+
+type FunctionNode =
+ | TSESTree.ArrowFunctionExpression
+ | TSESTree.FunctionExpression
+ | TSESTree.FunctionDeclaration;
+
+/**
+ * Creates a report location for the given function.
+ * The location only encompasses the "start" of the function, and not the body
+ *
+ * eg.
+ *
+ * ```
+ * function foo(args) {}
+ * ^^^^^^^^^^^^^^^^^^
+ *
+ * get y(args) {}
+ * ^^^^^^^^^^^
+ *
+ * const x = (args) => {}
+ * ^^^^^^^^^
+ * ```
+ */
+export function getFunctionHeadLoc(
+ node: FunctionNode,
+ sourceCode: TSESLint.SourceCode,
+): TSESTree.SourceLocation {
+ function getLocStart(): TSESTree.LineAndColumnData {
+ if (node.parent && node.parent.type === AST_NODE_TYPES.MethodDefinition) {
+ // return the start location for class method
+
+ if (node.parent.decorators && node.parent.decorators.length > 0) {
+ // exclude decorators
+ return sourceCode.getTokenAfter(
+ node.parent.decorators[node.parent.decorators.length - 1],
+ )!.loc.start;
+ }
+
+ return node.parent.loc.start;
+ }
+
+ if (
+ node.parent &&
+ node.parent.type === AST_NODE_TYPES.Property &&
+ node.parent.method
+ ) {
+ // return the start location for object method shorthand
+ return node.parent.loc.start;
+ }
+
+ // return the start location for a regular function
+ return node.loc.start;
+ }
+
+ function getLocEnd(): TSESTree.LineAndColumnData {
+ if (node.type === AST_NODE_TYPES.ArrowFunctionExpression) {
+ // find the end location for arrow function expression
+ return sourceCode.getTokenBefore(
+ node.body,
+ token =>
+ token.type === AST_TOKEN_TYPES.Punctuator && token.value === '=>',
+ )!.loc.end;
+ }
+
+ // return the end location for a regular function
+ return sourceCode.getTokenBefore(node.body)!.loc.end;
+ }
+
+ return {
+ start: getLocStart(),
+ end: getLocEnd(),
+ };
+}
diff --git a/packages/eslint-plugin/src/util/index.ts b/packages/eslint-plugin/src/util/index.ts
index 810398a093f0..fc5346f73466 100644
--- a/packages/eslint-plugin/src/util/index.ts
+++ b/packages/eslint-plugin/src/util/index.ts
@@ -3,6 +3,7 @@ import { ESLintUtils } from '@typescript-eslint/experimental-utils';
export * from './astUtils';
export * from './collectUnusedVariables';
export * from './createRule';
+export * from './getFunctionHeadLoc';
export * from './isTypeReadonly';
export * from './misc';
export * from './nullThrows';
diff --git a/packages/eslint-plugin/tests/rules/consistent-indexed-object-style.test.ts b/packages/eslint-plugin/tests/rules/consistent-indexed-object-style.test.ts
index 31077fcf6206..eb7e5cc8d1f6 100644
--- a/packages/eslint-plugin/tests/rules/consistent-indexed-object-style.test.ts
+++ b/packages/eslint-plugin/tests/rules/consistent-indexed-object-style.test.ts
@@ -76,7 +76,6 @@ interface Foo {
[];
}
`,
-
// 'index-signature'
// Unhandled type
{
@@ -166,6 +165,20 @@ type Foo = Record;
errors: [{ messageId: 'preferRecord', line: 2, column: 1 }],
},
+ // Interface with extends
+ {
+ code: `
+interface B extends A {
+ [index: number]: unknown;
+}
+ `,
+ output: `
+interface B extends A {
+ [index: number]: unknown;
+}
+ `,
+ errors: [{ messageId: 'preferRecord', line: 2, column: 1 }],
+ },
// Readonly interface with generic parameter
{
code: `
diff --git a/packages/eslint-plugin/tests/rules/member-delimiter-style.test.ts b/packages/eslint-plugin/tests/rules/member-delimiter-style.test.ts
index d0fa7895b9c6..c69e54e2af00 100644
--- a/packages/eslint-plugin/tests/rules/member-delimiter-style.test.ts
+++ b/packages/eslint-plugin/tests/rules/member-delimiter-style.test.ts
@@ -705,6 +705,75 @@ type Bar = {
},
],
},
+ {
+ code: `
+type Foo = {a: {
+ b: true;
+}};
+ `,
+ options: [
+ {
+ multilineDetection: 'last-member',
+ },
+ ],
+ },
+ `
+type Foo = {a: {
+ b: true;
+};};
+ `,
+ {
+ code: `
+type Foo = {a: {
+ b: true;
+};};
+ `,
+ options: [
+ {
+ multilineDetection: 'brackets',
+ },
+ ],
+ },
+ {
+ code: `
+type Foo = {
+ a: {
+ b: true;
+ };
+};
+ `,
+ options: [
+ {
+ multilineDetection: 'last-member',
+ },
+ ],
+ },
+ {
+ code: `
+type Foo = {a: {
+ b: true;
+};};
+ `,
+ options: [
+ {
+ singleline: { delimiter: 'semi', requireLast: true },
+ multilineDetection: 'last-member',
+ },
+ ],
+ },
+ {
+ code: `
+type Foo = {
+
+};
+ `,
+ options: [
+ {
+ singleline: { delimiter: 'semi', requireLast: true },
+ multilineDetection: 'last-member',
+ },
+ ],
+ },
{
code: `
@@ -3365,5 +3434,101 @@ type Foo = {
},
],
},
+ {
+ code: `
+type Foo = {a: {
+ b: true;
+};};
+ `,
+ output: `
+type Foo = {a: {
+ b: true;
+}};
+ `,
+ options: [
+ {
+ multilineDetection: 'last-member',
+ },
+ ],
+ errors: [
+ {
+ messageId: 'unexpectedSemi',
+ line: 4,
+ column: 3,
+ },
+ ],
+ },
+ {
+ code: `
+type Foo = {a: {
+ b: true;
+}};
+ `,
+ output: `
+type Foo = {a: {
+ b: true;
+};};
+ `,
+ errors: [
+ {
+ messageId: 'expectedSemi',
+ line: 4,
+ column: 2,
+ },
+ ],
+ },
+ {
+ code: `
+type Foo = {
+ a: {
+ b: true;
+ }
+};
+ `,
+ output: `
+type Foo = {
+ a: {
+ b: true;
+ };
+};
+ `,
+ options: [
+ {
+ multilineDetection: 'last-member',
+ },
+ ],
+ errors: [
+ {
+ messageId: 'expectedSemi',
+ line: 5,
+ column: 4,
+ },
+ ],
+ },
+ {
+ code: `
+type Foo = {a: {
+ b: true;
+}};
+ `,
+ output: `
+type Foo = {a: {
+ b: true;
+};};
+ `,
+ options: [
+ {
+ singleline: { delimiter: 'semi', requireLast: true },
+ multilineDetection: 'last-member',
+ },
+ ],
+ errors: [
+ {
+ messageId: 'expectedSemi',
+ line: 4,
+ column: 2,
+ },
+ ],
+ },
],
});
diff --git a/packages/eslint-plugin/tests/rules/no-implied-eval.test.ts b/packages/eslint-plugin/tests/rules/no-implied-eval.test.ts
index a9867d73018d..de619abbc8b5 100644
--- a/packages/eslint-plugin/tests/rules/no-implied-eval.test.ts
+++ b/packages/eslint-plugin/tests/rules/no-implied-eval.test.ts
@@ -251,6 +251,12 @@ const foo = (callback: Function) => {
setTimeout(callback, 0);
};
`,
+ `
+const foo = () => {};
+const bar = () => {};
+
+setTimeout(Math.radom() > 0.5 ? foo : bar, 0);
+ `,
],
invalid: [
@@ -606,6 +612,21 @@ const fn = (foo: string | any) => {
},
{
code: `
+const foo = 'foo';
+const bar = () => {};
+
+setTimeout(Math.radom() > 0.5 ? foo : bar, 0);
+ `,
+ errors: [
+ {
+ messageId: 'noImpliedEvalError',
+ line: 5,
+ column: 12,
+ },
+ ],
+ },
+ {
+ code: `
window.setTimeout(\`\`, 0);
window['setTimeout'](\`\`, 0);
diff --git a/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars.test.ts b/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars.test.ts
index eaf59a485710..c5b5ef1887f2 100644
--- a/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars.test.ts
+++ b/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars.test.ts
@@ -688,6 +688,13 @@ export { Foo };
`
export namespace Foo {
export const item: Foo = 1;
+}
+ `,
+ `
+export namespace foo.bar {
+ export interface User {
+ name: string;
+ }
}
`,
// exported self-referencing types
diff --git a/packages/eslint-plugin/tests/rules/prefer-function-type.test.ts b/packages/eslint-plugin/tests/rules/prefer-function-type.test.ts
index 71c2557fda44..51aa85234890 100644
--- a/packages/eslint-plugin/tests/rules/prefer-function-type.test.ts
+++ b/packages/eslint-plugin/tests/rules/prefer-function-type.test.ts
@@ -65,6 +65,114 @@ interface Foo {
type Foo = () => string;
`,
},
+ // https://github.com/typescript-eslint/typescript-eslint/issues/3004
+ {
+ code: `
+export default interface Foo {
+ /** comment */
+ (): string;
+}
+ `,
+ errors: [
+ {
+ messageId: 'functionTypeOverCallableType',
+ type: AST_NODE_TYPES.TSCallSignatureDeclaration,
+ data: {
+ literalOrInterface: phrases[AST_NODE_TYPES.TSInterfaceDeclaration],
+ },
+ },
+ ],
+ output: `
+export default interface Foo {
+ /** comment */
+ (): string;
+}
+ `,
+ },
+ {
+ code: `
+interface Foo {
+ // comment
+ (): string;
+}
+ `,
+ errors: [
+ {
+ messageId: 'functionTypeOverCallableType',
+ type: AST_NODE_TYPES.TSCallSignatureDeclaration,
+ data: {
+ literalOrInterface: phrases[AST_NODE_TYPES.TSInterfaceDeclaration],
+ },
+ },
+ ],
+ output: `
+// comment
+type Foo = () => string;
+ `,
+ },
+ {
+ code: `
+export interface Foo {
+ /** comment */
+ (): string;
+}
+ `,
+ errors: [
+ {
+ messageId: 'functionTypeOverCallableType',
+ type: AST_NODE_TYPES.TSCallSignatureDeclaration,
+ data: {
+ literalOrInterface: phrases[AST_NODE_TYPES.TSInterfaceDeclaration],
+ },
+ },
+ ],
+ output: `
+/** comment */
+export type Foo = () => string;
+ `,
+ },
+ {
+ code: `
+export interface Foo {
+ // comment
+ (): string;
+}
+ `,
+ errors: [
+ {
+ messageId: 'functionTypeOverCallableType',
+ type: AST_NODE_TYPES.TSCallSignatureDeclaration,
+ data: {
+ literalOrInterface: phrases[AST_NODE_TYPES.TSInterfaceDeclaration],
+ },
+ },
+ ],
+ output: `
+// comment
+export type Foo = () => string;
+ `,
+ },
+ {
+ code: `
+function foo(bar: { /* comment */ (s: string): number } | undefined): number {
+ return bar('hello');
+}
+ `,
+ errors: [
+ {
+ messageId: 'functionTypeOverCallableType',
+ type: AST_NODE_TYPES.TSCallSignatureDeclaration,
+ data: {
+ literalOrInterface: phrases[AST_NODE_TYPES.TSTypeLiteral],
+ },
+ },
+ ],
+ output: `
+function foo(bar: /* comment */ ((s: string) => number) | undefined): number {
+ return bar('hello');
+}
+ `,
+ },
{
code: `
type Foo = {
@@ -234,8 +342,8 @@ interface Foo {
},
{
code: `
+// isn't actually valid ts but want to not give message saying it refers to Foo.
interface Foo {
- // isn't actually valid ts but want to not give message saying it refers to Foo.
(): {
a: {
nested: this;
@@ -257,6 +365,7 @@ interface Foo {
},
],
output: noFormat`
+// isn't actually valid ts but want to not give message saying it refers to Foo.
type Foo = () => {
a: {
nested: this;
diff --git a/packages/eslint-plugin/tests/rules/promise-function-async.test.ts b/packages/eslint-plugin/tests/rules/promise-function-async.test.ts
index 49f6e250b6c8..961047138c99 100644
--- a/packages/eslint-plugin/tests/rules/promise-function-async.test.ts
+++ b/packages/eslint-plugin/tests/rules/promise-function-async.test.ts
@@ -611,6 +611,25 @@ async function foo(): Promise | SPromise {
return Math.random() > 0.5
? Promise.resolve('value')
: Promise.resolve(false);
+}
+ `,
+ },
+ {
+ code: `
+class Test {
+ @decorator
+ public test() {
+ return Promise.resolve(123);
+ }
+}
+ `,
+ errors: [{ line: 4, column: 3, messageId }],
+ output: `
+class Test {
+ @decorator
+ public async test() {
+ return Promise.resolve(123);
+ }
}
`,
},
diff --git a/packages/eslint-plugin/tests/rules/unbound-method.test.ts b/packages/eslint-plugin/tests/rules/unbound-method.test.ts
index 83f3b93524ce..911206b1f219 100644
--- a/packages/eslint-plugin/tests/rules/unbound-method.test.ts
+++ b/packages/eslint-plugin/tests/rules/unbound-method.test.ts
@@ -265,6 +265,22 @@ class Foo {
}
const { bound } = new Foo();
`,
+ // https://github.com/typescript-eslint/typescript-eslint/issues/1866
+ `
+class BaseClass {
+ x: number = 42;
+ logThis() {}
+}
+class OtherClass extends BaseClass {
+ superLogThis: any;
+ constructor() {
+ super();
+ this.superLogThis = super.logThis;
+ }
+}
+const oc = new OtherClass();
+oc.superLogThis();
+ `,
],
invalid: [
{
@@ -529,5 +545,48 @@ const { log } = console;
},
],
},
+ // https://github.com/typescript-eslint/typescript-eslint/issues/1866
+ {
+ code: `
+class BaseClass {
+ logThis() {}
+}
+class OtherClass extends BaseClass {
+ constructor() {
+ super();
+ const x = super.logThis;
+ }
+}
+ `,
+ errors: [
+ {
+ line: 8,
+ column: 15,
+ messageId: 'unbound',
+ },
+ ],
+ },
+ // https://github.com/typescript-eslint/typescript-eslint/issues/1866
+ {
+ code: `
+class BaseClass {
+ logThis() {}
+}
+class OtherClass extends BaseClass {
+ constructor() {
+ super();
+ let x;
+ x = super.logThis;
+ }
+}
+ `,
+ errors: [
+ {
+ line: 9,
+ column: 9,
+ messageId: 'unbound',
+ },
+ ],
+ },
],
});
diff --git a/packages/experimental-utils/CHANGELOG.md b/packages/experimental-utils/CHANGELOG.md
index 572aad8c758b..fea22449db8c 100644
--- a/packages/experimental-utils/CHANGELOG.md
+++ b/packages/experimental-utils/CHANGELOG.md
@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [4.16.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.2...v4.16.0) (2021-03-01)
+
+**Note:** Version bump only for package @typescript-eslint/experimental-utils
+
+
+
+
+
## [4.15.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.1...v4.15.2) (2021-02-22)
**Note:** Version bump only for package @typescript-eslint/experimental-utils
diff --git a/packages/experimental-utils/package.json b/packages/experimental-utils/package.json
index 78b70d58ae43..41976a277c98 100644
--- a/packages/experimental-utils/package.json
+++ b/packages/experimental-utils/package.json
@@ -1,6 +1,6 @@
{
"name": "@typescript-eslint/experimental-utils",
- "version": "4.15.2",
+ "version": "4.16.0",
"description": "(Experimental) Utilities for working with TypeScript + ESLint together",
"keywords": [
"eslint",
@@ -40,9 +40,9 @@
},
"dependencies": {
"@types/json-schema": "^7.0.3",
- "@typescript-eslint/scope-manager": "4.15.2",
- "@typescript-eslint/types": "4.15.2",
- "@typescript-eslint/typescript-estree": "4.15.2",
+ "@typescript-eslint/scope-manager": "4.16.0",
+ "@typescript-eslint/types": "4.16.0",
+ "@typescript-eslint/typescript-estree": "4.16.0",
"eslint-scope": "^5.0.0",
"eslint-utils": "^2.0.0"
},
diff --git a/packages/parser/CHANGELOG.md b/packages/parser/CHANGELOG.md
index 9de839c086a4..3fa560aa0872 100644
--- a/packages/parser/CHANGELOG.md
+++ b/packages/parser/CHANGELOG.md
@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [4.16.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.2...v4.16.0) (2021-03-01)
+
+**Note:** Version bump only for package @typescript-eslint/parser
+
+
+
+
+
## [4.15.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.1...v4.15.2) (2021-02-22)
**Note:** Version bump only for package @typescript-eslint/parser
diff --git a/packages/parser/package.json b/packages/parser/package.json
index d209f7a97e18..a8ef88ee9094 100644
--- a/packages/parser/package.json
+++ b/packages/parser/package.json
@@ -1,6 +1,6 @@
{
"name": "@typescript-eslint/parser",
- "version": "4.15.2",
+ "version": "4.16.0",
"description": "An ESLint custom parser which leverages TypeScript ESTree",
"main": "dist/index.js",
"types": "dist/index.d.ts",
@@ -44,14 +44,14 @@
"eslint": "^5.0.0 || ^6.0.0 || ^7.0.0"
},
"dependencies": {
- "@typescript-eslint/scope-manager": "4.15.2",
- "@typescript-eslint/types": "4.15.2",
- "@typescript-eslint/typescript-estree": "4.15.2",
+ "@typescript-eslint/scope-manager": "4.16.0",
+ "@typescript-eslint/types": "4.16.0",
+ "@typescript-eslint/typescript-estree": "4.16.0",
"debug": "^4.1.1"
},
"devDependencies": {
"@types/glob": "*",
- "@typescript-eslint/experimental-utils": "4.15.2",
+ "@typescript-eslint/experimental-utils": "4.16.0",
"glob": "*",
"typescript": "*"
},
diff --git a/packages/scope-manager/CHANGELOG.md b/packages/scope-manager/CHANGELOG.md
index d362197c9737..29bc89373496 100644
--- a/packages/scope-manager/CHANGELOG.md
+++ b/packages/scope-manager/CHANGELOG.md
@@ -3,6 +3,17 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [4.16.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.2...v4.16.0) (2021-03-01)
+
+
+### Bug Fixes
+
+* **scope-manager:** update libs for typescript 4.2 ([#3118](https://github.com/typescript-eslint/typescript-eslint/issues/3118)) ([0336c79](https://github.com/typescript-eslint/typescript-eslint/commit/0336c798c9502fc250d2eaa045661950da55e52f))
+
+
+
+
+
## [4.15.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.1...v4.15.2) (2021-02-22)
**Note:** Version bump only for package @typescript-eslint/scope-manager
diff --git a/packages/scope-manager/package.json b/packages/scope-manager/package.json
index 77f168939548..6effd54dc75d 100644
--- a/packages/scope-manager/package.json
+++ b/packages/scope-manager/package.json
@@ -1,6 +1,6 @@
{
"name": "@typescript-eslint/scope-manager",
- "version": "4.15.2",
+ "version": "4.16.0",
"description": "TypeScript scope analyser for ESLint",
"keywords": [
"eslint",
@@ -39,12 +39,12 @@
"typecheck": "tsc -p tsconfig.json --noEmit"
},
"dependencies": {
- "@typescript-eslint/types": "4.15.2",
- "@typescript-eslint/visitor-keys": "4.15.2"
+ "@typescript-eslint/types": "4.16.0",
+ "@typescript-eslint/visitor-keys": "4.16.0"
},
"devDependencies": {
"@types/glob": "*",
- "@typescript-eslint/typescript-estree": "4.15.2",
+ "@typescript-eslint/typescript-estree": "4.16.0",
"glob": "*",
"jest-specific-snapshot": "*",
"make-dir": "*",
diff --git a/packages/scope-manager/src/lib/dom.ts b/packages/scope-manager/src/lib/dom.ts
index e736f675fd4c..9fc4c5106841 100644
--- a/packages/scope-manager/src/lib/dom.ts
+++ b/packages/scope-manager/src/lib/dom.ts
@@ -629,6 +629,12 @@ export const dom = {
isValueVariable: false,
name: 'ImageEncodeOptions',
},
+ ImportMeta: {
+ eslintImplicitGlobalSetting: 'readonly',
+ isTypeVariable: true,
+ isValueVariable: false,
+ name: 'ImportMeta',
+ },
InputEventInit: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
@@ -959,12 +965,6 @@ export const dom = {
isValueVariable: false,
name: 'PermissionDescriptor',
},
- PipeOptions: {
- eslintImplicitGlobalSetting: 'readonly',
- isTypeVariable: true,
- isValueVariable: false,
- name: 'PipeOptions',
- },
PointerEventInit: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
@@ -1073,6 +1073,12 @@ export const dom = {
isValueVariable: false,
name: 'QueuingStrategy',
},
+ QueuingStrategyInit: {
+ eslintImplicitGlobalSetting: 'readonly',
+ isTypeVariable: true,
+ isValueVariable: false,
+ name: 'QueuingStrategyInit',
+ },
RTCAnswerOptions: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
@@ -1421,17 +1427,23 @@ export const dom = {
isValueVariable: false,
name: 'RTCTransportStats',
},
- ReadableStreamReadDoneResult: {
+ ReadableStreamDefaultReadDoneResult: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'ReadableStreamReadDoneResult',
+ name: 'ReadableStreamDefaultReadDoneResult',
},
- ReadableStreamReadValueResult: {
+ ReadableStreamDefaultReadValueResult: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'ReadableStreamReadValueResult',
+ name: 'ReadableStreamDefaultReadValueResult',
+ },
+ ReadableWritablePair: {
+ eslintImplicitGlobalSetting: 'readonly',
+ isTypeVariable: true,
+ isValueVariable: false,
+ name: 'ReadableWritablePair',
},
RegistrationOptions: {
eslintImplicitGlobalSetting: 'readonly',
@@ -1445,6 +1457,12 @@ export const dom = {
isValueVariable: false,
name: 'RequestInit',
},
+ ResizeObserverOptions: {
+ eslintImplicitGlobalSetting: 'readonly',
+ isTypeVariable: true,
+ isValueVariable: false,
+ name: 'ResizeObserverOptions',
+ },
ResponseInit: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
@@ -1565,6 +1583,18 @@ export const dom = {
isValueVariable: false,
name: 'ShareData',
},
+ SpeechRecognitionErrorEventInit: {
+ eslintImplicitGlobalSetting: 'readonly',
+ isTypeVariable: true,
+ isValueVariable: false,
+ name: 'SpeechRecognitionErrorEventInit',
+ },
+ SpeechRecognitionEventInit: {
+ eslintImplicitGlobalSetting: 'readonly',
+ isTypeVariable: true,
+ isValueVariable: false,
+ name: 'SpeechRecognitionEventInit',
+ },
SpeechSynthesisErrorEventInit: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
@@ -1613,6 +1643,12 @@ export const dom = {
isValueVariable: false,
name: 'StoreSiteSpecificExceptionsInformation',
},
+ StreamPipeOptions: {
+ eslintImplicitGlobalSetting: 'readonly',
+ isTypeVariable: true,
+ isValueVariable: false,
+ name: 'StreamPipeOptions',
+ },
TextDecodeOptions: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
@@ -1673,12 +1709,6 @@ export const dom = {
isValueVariable: false,
name: 'ULongRange',
},
- UnderlyingByteSource: {
- eslintImplicitGlobalSetting: 'readonly',
- isTypeVariable: true,
- isValueVariable: false,
- name: 'UnderlyingByteSource',
- },
UnderlyingSink: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
@@ -4715,53 +4745,53 @@ export const dom = {
isValueVariable: true,
name: 'Range',
},
- ReadableByteStreamController: {
+ ReadableStream: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: true,
- name: 'ReadableByteStreamController',
+ name: 'ReadableStream',
},
- ReadableStream: {
+ ReadableStreamDefaultController: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: true,
- name: 'ReadableStream',
+ name: 'ReadableStreamDefaultController',
},
- ReadableStreamBYOBReader: {
+ ReadableStreamDefaultReader: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: true,
- name: 'ReadableStreamBYOBReader',
+ name: 'ReadableStreamDefaultReader',
},
- ReadableStreamBYOBRequest: {
+ ReadableStreamGenericReader: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
- isValueVariable: true,
- name: 'ReadableStreamBYOBRequest',
+ isValueVariable: false,
+ name: 'ReadableStreamGenericReader',
},
- ReadableStreamDefaultController: {
+ Request: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: true,
- name: 'ReadableStreamDefaultController',
+ name: 'Request',
},
- ReadableStreamDefaultReader: {
+ ResizeObserver: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: true,
- name: 'ReadableStreamDefaultReader',
+ name: 'ResizeObserver',
},
- ReadableStreamReader: {
+ ResizeObserverEntry: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: true,
- name: 'ReadableStreamReader',
+ name: 'ResizeObserverEntry',
},
- Request: {
+ ResizeObserverSize: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: true,
- name: 'Request',
+ name: 'ResizeObserverSize',
},
Response: {
eslintImplicitGlobalSetting: 'readonly',
@@ -5693,6 +5723,12 @@ export const dom = {
isValueVariable: true,
name: 'SpeechRecognitionAlternative',
},
+ SpeechRecognitionErrorEvent: {
+ eslintImplicitGlobalSetting: 'readonly',
+ isTypeVariable: true,
+ isValueVariable: true,
+ name: 'SpeechRecognitionErrorEvent',
+ },
SpeechRecognitionEvent: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
@@ -6593,11 +6629,11 @@ export const dom = {
isValueVariable: false,
name: 'PositionErrorCallback',
},
- QueuingStrategySizeCallback: {
+ QueuingStrategySize: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'QueuingStrategySizeCallback',
+ name: 'QueuingStrategySize',
},
RTCPeerConnectionErrorCallback: {
eslintImplicitGlobalSetting: 'readonly',
@@ -6617,65 +6653,77 @@ export const dom = {
isValueVariable: false,
name: 'RTCStatsCallback',
},
- ReadableByteStreamControllerCallback: {
+ ResizeObserverCallback: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'ReadableByteStreamControllerCallback',
+ name: 'ResizeObserverCallback',
},
- ReadableStreamDefaultControllerCallback: {
+ TransformerFlushCallback: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'ReadableStreamDefaultControllerCallback',
+ name: 'TransformerFlushCallback',
},
- ReadableStreamErrorCallback: {
+ TransformerStartCallback: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'ReadableStreamErrorCallback',
+ name: 'TransformerStartCallback',
},
- TransformStreamDefaultControllerCallback: {
+ TransformerTransformCallback: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'TransformStreamDefaultControllerCallback',
+ name: 'TransformerTransformCallback',
},
- TransformStreamDefaultControllerTransformCallback: {
+ UnderlyingSinkAbortCallback: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'TransformStreamDefaultControllerTransformCallback',
+ name: 'UnderlyingSinkAbortCallback',
},
- VoidFunction: {
+ UnderlyingSinkCloseCallback: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'VoidFunction',
+ name: 'UnderlyingSinkCloseCallback',
},
- WritableStreamDefaultControllerCloseCallback: {
+ UnderlyingSinkStartCallback: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'WritableStreamDefaultControllerCloseCallback',
+ name: 'UnderlyingSinkStartCallback',
},
- WritableStreamDefaultControllerStartCallback: {
+ UnderlyingSinkWriteCallback: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'WritableStreamDefaultControllerStartCallback',
+ name: 'UnderlyingSinkWriteCallback',
},
- WritableStreamDefaultControllerWriteCallback: {
+ UnderlyingSourceCancelCallback: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'WritableStreamDefaultControllerWriteCallback',
+ name: 'UnderlyingSourceCancelCallback',
},
- WritableStreamErrorCallback: {
+ UnderlyingSourcePullCallback: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'WritableStreamErrorCallback',
+ name: 'UnderlyingSourcePullCallback',
+ },
+ UnderlyingSourceStartCallback: {
+ eslintImplicitGlobalSetting: 'readonly',
+ isTypeVariable: true,
+ isValueVariable: false,
+ name: 'UnderlyingSourceStartCallback',
+ },
+ VoidFunction: {
+ eslintImplicitGlobalSetting: 'readonly',
+ isTypeVariable: true,
+ isValueVariable: false,
+ name: 'VoidFunction',
},
HTMLElementTagNameMap: {
eslintImplicitGlobalSetting: 'readonly',
@@ -6827,11 +6875,17 @@ export const dom = {
isValueVariable: false,
name: 'PerformanceEntryList',
},
- ReadableStreamReadResult: {
+ ReadableStreamReader: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'ReadableStreamReadResult',
+ name: 'ReadableStreamReader',
+ },
+ ReadableStreamController: {
+ eslintImplicitGlobalSetting: 'readonly',
+ isTypeVariable: true,
+ isValueVariable: false,
+ name: 'ReadableStreamController',
},
VibratePattern: {
eslintImplicitGlobalSetting: 'readonly',
@@ -7055,6 +7109,12 @@ export const dom = {
isValueVariable: false,
name: 'WindowProxy',
},
+ ReadableStreamDefaultReadResult: {
+ eslintImplicitGlobalSetting: 'readonly',
+ isTypeVariable: true,
+ isValueVariable: false,
+ name: 'ReadableStreamDefaultReadResult',
+ },
AlignSetting: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
@@ -7751,6 +7811,12 @@ export const dom = {
isValueVariable: false,
name: 'ResidentKeyRequirement',
},
+ ResizeObserverBoxOptions: {
+ eslintImplicitGlobalSetting: 'readonly',
+ isTypeVariable: true,
+ isValueVariable: false,
+ name: 'ResizeObserverBoxOptions',
+ },
ResizeQuality: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
@@ -7817,6 +7883,12 @@ export const dom = {
isValueVariable: false,
name: 'ShadowRootMode',
},
+ SpeechRecognitionErrorCode: {
+ eslintImplicitGlobalSetting: 'readonly',
+ isTypeVariable: true,
+ isValueVariable: false,
+ name: 'SpeechRecognitionErrorCode',
+ },
SpeechSynthesisErrorCode: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
diff --git a/packages/scope-manager/src/lib/webworker.ts b/packages/scope-manager/src/lib/webworker.ts
index c56ee9885241..3f76351c98f4 100644
--- a/packages/scope-manager/src/lib/webworker.ts
+++ b/packages/scope-manager/src/lib/webworker.ts
@@ -263,6 +263,12 @@ export const webworker = {
isValueVariable: false,
name: 'ImageEncodeOptions',
},
+ ImportMeta: {
+ eslintImplicitGlobalSetting: 'readonly',
+ isTypeVariable: true,
+ isValueVariable: false,
+ name: 'ImportMeta',
+ },
JsonWebKey: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
@@ -335,12 +341,6 @@ export const webworker = {
isValueVariable: false,
name: 'PermissionDescriptor',
},
- PipeOptions: {
- eslintImplicitGlobalSetting: 'readonly',
- isTypeVariable: true,
- isValueVariable: false,
- name: 'PipeOptions',
- },
PostMessageOptions: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
@@ -395,17 +395,29 @@ export const webworker = {
isValueVariable: false,
name: 'QueuingStrategy',
},
- ReadableStreamReadDoneResult: {
+ QueuingStrategyInit: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'ReadableStreamReadDoneResult',
+ name: 'QueuingStrategyInit',
},
- ReadableStreamReadValueResult: {
+ ReadableStreamDefaultReadDoneResult: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'ReadableStreamReadValueResult',
+ name: 'ReadableStreamDefaultReadDoneResult',
+ },
+ ReadableStreamDefaultReadValueResult: {
+ eslintImplicitGlobalSetting: 'readonly',
+ isTypeVariable: true,
+ isValueVariable: false,
+ name: 'ReadableStreamDefaultReadValueResult',
+ },
+ ReadableWritablePair: {
+ eslintImplicitGlobalSetting: 'readonly',
+ isTypeVariable: true,
+ isValueVariable: false,
+ name: 'ReadableWritablePair',
},
RegistrationOptions: {
eslintImplicitGlobalSetting: 'readonly',
@@ -467,6 +479,12 @@ export const webworker = {
isValueVariable: false,
name: 'StorageEstimate',
},
+ StreamPipeOptions: {
+ eslintImplicitGlobalSetting: 'readonly',
+ isTypeVariable: true,
+ isValueVariable: false,
+ name: 'StreamPipeOptions',
+ },
SyncEventInit: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
@@ -497,12 +515,6 @@ export const webworker = {
isValueVariable: false,
name: 'Transformer',
},
- UnderlyingByteSource: {
- eslintImplicitGlobalSetting: 'readonly',
- isTypeVariable: true,
- isValueVariable: false,
- name: 'UnderlyingByteSource',
- },
UnderlyingSink: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
@@ -1373,30 +1385,12 @@ export const webworker = {
isValueVariable: true,
name: 'PushSubscriptionOptions',
},
- ReadableByteStreamController: {
- eslintImplicitGlobalSetting: 'readonly',
- isTypeVariable: true,
- isValueVariable: true,
- name: 'ReadableByteStreamController',
- },
ReadableStream: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: true,
name: 'ReadableStream',
},
- ReadableStreamBYOBReader: {
- eslintImplicitGlobalSetting: 'readonly',
- isTypeVariable: true,
- isValueVariable: true,
- name: 'ReadableStreamBYOBReader',
- },
- ReadableStreamBYOBRequest: {
- eslintImplicitGlobalSetting: 'readonly',
- isTypeVariable: true,
- isValueVariable: true,
- name: 'ReadableStreamBYOBRequest',
- },
ReadableStreamDefaultController: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
@@ -1409,11 +1403,11 @@ export const webworker = {
isValueVariable: true,
name: 'ReadableStreamDefaultReader',
},
- ReadableStreamReader: {
+ ReadableStreamGenericReader: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
- isValueVariable: true,
- name: 'ReadableStreamReader',
+ isValueVariable: false,
+ name: 'ReadableStreamGenericReader',
},
Request: {
eslintImplicitGlobalSetting: 'readonly',
@@ -1919,71 +1913,77 @@ export const webworker = {
isValueVariable: false,
name: 'PerformanceObserverCallback',
},
- QueuingStrategySizeCallback: {
+ QueuingStrategySize: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'QueuingStrategySizeCallback',
+ name: 'QueuingStrategySize',
},
- ReadableByteStreamControllerCallback: {
+ TransformerFlushCallback: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'ReadableByteStreamControllerCallback',
+ name: 'TransformerFlushCallback',
},
- ReadableStreamDefaultControllerCallback: {
+ TransformerStartCallback: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'ReadableStreamDefaultControllerCallback',
+ name: 'TransformerStartCallback',
},
- ReadableStreamErrorCallback: {
+ TransformerTransformCallback: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'ReadableStreamErrorCallback',
+ name: 'TransformerTransformCallback',
},
- TransformStreamDefaultControllerCallback: {
+ UnderlyingSinkAbortCallback: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'TransformStreamDefaultControllerCallback',
+ name: 'UnderlyingSinkAbortCallback',
},
- TransformStreamDefaultControllerTransformCallback: {
+ UnderlyingSinkCloseCallback: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'TransformStreamDefaultControllerTransformCallback',
+ name: 'UnderlyingSinkCloseCallback',
},
- VoidFunction: {
+ UnderlyingSinkStartCallback: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'VoidFunction',
+ name: 'UnderlyingSinkStartCallback',
},
- WritableStreamDefaultControllerCloseCallback: {
+ UnderlyingSinkWriteCallback: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'WritableStreamDefaultControllerCloseCallback',
+ name: 'UnderlyingSinkWriteCallback',
},
- WritableStreamDefaultControllerStartCallback: {
+ UnderlyingSourceCancelCallback: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'WritableStreamDefaultControllerStartCallback',
+ name: 'UnderlyingSourceCancelCallback',
},
- WritableStreamDefaultControllerWriteCallback: {
+ UnderlyingSourcePullCallback: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'WritableStreamDefaultControllerWriteCallback',
+ name: 'UnderlyingSourcePullCallback',
},
- WritableStreamErrorCallback: {
+ UnderlyingSourceStartCallback: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'WritableStreamErrorCallback',
+ name: 'UnderlyingSourceStartCallback',
+ },
+ VoidFunction: {
+ eslintImplicitGlobalSetting: 'readonly',
+ isTypeVariable: true,
+ isValueVariable: false,
+ name: 'VoidFunction',
},
HeadersInit: {
eslintImplicitGlobalSetting: 'readonly',
@@ -2063,11 +2063,17 @@ export const webworker = {
isValueVariable: false,
name: 'PushMessageDataInit',
},
- ReadableStreamReadResult: {
+ ReadableStreamReader: {
+ eslintImplicitGlobalSetting: 'readonly',
+ isTypeVariable: true,
+ isValueVariable: false,
+ name: 'ReadableStreamReader',
+ },
+ ReadableStreamController: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
isValueVariable: false,
- name: 'ReadableStreamReadResult',
+ name: 'ReadableStreamController',
},
VibratePattern: {
eslintImplicitGlobalSetting: 'readonly',
@@ -2225,6 +2231,12 @@ export const webworker = {
isValueVariable: false,
name: 'Transferable',
},
+ ReadableStreamDefaultReadResult: {
+ eslintImplicitGlobalSetting: 'readonly',
+ isTypeVariable: true,
+ isValueVariable: false,
+ name: 'ReadableStreamDefaultReadResult',
+ },
BinaryType: {
eslintImplicitGlobalSetting: 'readonly',
isTypeVariable: true,
diff --git a/packages/scope-manager/tests/fixtures/type-declaration/type-query-qualified.ts b/packages/scope-manager/tests/fixtures/type-declaration/type-query-qualified.ts
new file mode 100644
index 000000000000..4b1cc563d5f5
--- /dev/null
+++ b/packages/scope-manager/tests/fixtures/type-declaration/type-query-qualified.ts
@@ -0,0 +1,3 @@
+const x = { y: { z: 1 } };
+type T = typeof x.y.z;
+type Unresolved = x.y.z;
diff --git a/packages/scope-manager/tests/fixtures/type-declaration/type-query-qualified.ts.shot b/packages/scope-manager/tests/fixtures/type-declaration/type-query-qualified.ts.shot
new file mode 100644
index 000000000000..afb1ec52a0d2
--- /dev/null
+++ b/packages/scope-manager/tests/fixtures/type-declaration/type-query-qualified.ts.shot
@@ -0,0 +1,96 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`type-declaration type-query-qualified 1`] = `
+ScopeManager {
+ variables: Array [
+ ImplicitGlobalConstTypeVariable,
+ Variable$2 {
+ defs: Array [
+ VariableDefinition$1 {
+ name: Identifier<"x">,
+ node: VariableDeclarator$1,
+ },
+ ],
+ name: "x",
+ references: Array [
+ Reference$1 {
+ identifier: Identifier<"x">,
+ init: true,
+ isRead: false,
+ isTypeReference: false,
+ isValueReference: true,
+ isWrite: true,
+ resolved: Variable$2,
+ writeExpr: ObjectExpression$2,
+ },
+ Reference$2 {
+ identifier: Identifier<"x">,
+ isRead: true,
+ isTypeReference: false,
+ isValueReference: true,
+ isWrite: false,
+ resolved: Variable$2,
+ },
+ ],
+ isValueVariable: true,
+ isTypeVariable: false,
+ },
+ Variable$3 {
+ defs: Array [
+ TypeDefinition$2 {
+ name: Identifier<"T">,
+ node: TSTypeAliasDeclaration$3,
+ },
+ ],
+ name: "T",
+ references: Array [],
+ isValueVariable: false,
+ isTypeVariable: true,
+ },
+ Variable$4 {
+ defs: Array [
+ TypeDefinition$3 {
+ name: Identifier<"Unresolved">,
+ node: TSTypeAliasDeclaration$4,
+ },
+ ],
+ name: "Unresolved",
+ references: Array [],
+ isValueVariable: false,
+ isTypeVariable: true,
+ },
+ ],
+ scopes: Array [
+ GlobalScope$1 {
+ block: Program$5,
+ isStrict: false,
+ references: Array [
+ Reference$1,
+ Reference$2,
+ Reference$3 {
+ identifier: Identifier<"x">,
+ isRead: true,
+ isTypeReference: true,
+ isValueReference: false,
+ isWrite: false,
+ resolved: null,
+ },
+ ],
+ set: Map {
+ "const" => ImplicitGlobalConstTypeVariable,
+ "x" => Variable$2,
+ "T" => Variable$3,
+ "Unresolved" => Variable$4,
+ },
+ type: "global",
+ upper: null,
+ variables: Array [
+ ImplicitGlobalConstTypeVariable,
+ Variable$2,
+ Variable$3,
+ Variable$4,
+ ],
+ },
+ ],
+}
+`;
diff --git a/packages/scope-manager/tests/fixtures/type-declaration/typeof-import-type-with-qualifier.ts b/packages/scope-manager/tests/fixtures/type-declaration/typeof-import-type-with-qualifier.ts
new file mode 100644
index 000000000000..c61a204af86d
--- /dev/null
+++ b/packages/scope-manager/tests/fixtures/type-declaration/typeof-import-type-with-qualifier.ts
@@ -0,0 +1 @@
+type T = typeof import('').default;
diff --git a/packages/scope-manager/tests/fixtures/type-declaration/typeof-import-type-with-qualifier.ts.shot b/packages/scope-manager/tests/fixtures/type-declaration/typeof-import-type-with-qualifier.ts.shot
new file mode 100644
index 000000000000..95ad0a27df5b
--- /dev/null
+++ b/packages/scope-manager/tests/fixtures/type-declaration/typeof-import-type-with-qualifier.ts.shot
@@ -0,0 +1,38 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`type-declaration typeof-import-type-with-qualifier 1`] = `
+ScopeManager {
+ variables: Array [
+ ImplicitGlobalConstTypeVariable,
+ Variable$2 {
+ defs: Array [
+ TypeDefinition$1 {
+ name: Identifier<"T">,
+ node: TSTypeAliasDeclaration$1,
+ },
+ ],
+ name: "T",
+ references: Array [],
+ isValueVariable: false,
+ isTypeVariable: true,
+ },
+ ],
+ scopes: Array [
+ GlobalScope$1 {
+ block: Program$2,
+ isStrict: false,
+ references: Array [],
+ set: Map {
+ "const" => ImplicitGlobalConstTypeVariable,
+ "T" => Variable$2,
+ },
+ type: "global",
+ upper: null,
+ variables: Array [
+ ImplicitGlobalConstTypeVariable,
+ Variable$2,
+ ],
+ },
+ ],
+}
+`;
diff --git a/packages/shared-fixtures/CHANGELOG.md b/packages/shared-fixtures/CHANGELOG.md
index c5114358f80d..6ff8a81e1e58 100644
--- a/packages/shared-fixtures/CHANGELOG.md
+++ b/packages/shared-fixtures/CHANGELOG.md
@@ -3,6 +3,17 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [4.16.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.2...v4.16.0) (2021-03-01)
+
+
+### Features
+
+* TypeScript 4.2 syntax support ([#3112](https://github.com/typescript-eslint/typescript-eslint/issues/3112)) ([2ebfb21](https://github.com/typescript-eslint/typescript-eslint/commit/2ebfb21ba6c88c793cfbd0e231e5803b2381694c))
+
+
+
+
+
## [4.15.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.1...v4.15.2) (2021-02-22)
diff --git a/packages/shared-fixtures/fixtures/jsx/namespace-this-name.src.js b/packages/shared-fixtures/fixtures/jsx/namespace-this-name.src.js
new file mode 100644
index 000000000000..71eb04b5e41a
--- /dev/null
+++ b/packages/shared-fixtures/fixtures/jsx/namespace-this-name.src.js
@@ -0,0 +1 @@
+;
diff --git a/packages/shared-fixtures/fixtures/typescript/types/constructor-abstract.src.ts b/packages/shared-fixtures/fixtures/typescript/types/constructor-abstract.src.ts
new file mode 100644
index 000000000000..fbaa3a91c4a4
--- /dev/null
+++ b/packages/shared-fixtures/fixtures/typescript/types/constructor-abstract.src.ts
@@ -0,0 +1 @@
+const x: abstract new () => void;
diff --git a/packages/shared-fixtures/fixtures/typescript/types/constructor-empty.src.ts b/packages/shared-fixtures/fixtures/typescript/types/constructor-empty.src.ts
new file mode 100644
index 000000000000..c1fc7b6057c6
--- /dev/null
+++ b/packages/shared-fixtures/fixtures/typescript/types/constructor-empty.src.ts
@@ -0,0 +1 @@
+const x: new () => void;
diff --git a/packages/shared-fixtures/package.json b/packages/shared-fixtures/package.json
index 8faf060c7cd6..9f6fdb3f8000 100644
--- a/packages/shared-fixtures/package.json
+++ b/packages/shared-fixtures/package.json
@@ -1,5 +1,5 @@
{
"name": "@typescript-eslint/shared-fixtures",
- "version": "4.15.2",
+ "version": "4.16.0",
"private": true
}
diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md
index 42a5128ea057..10e999a3b5ca 100644
--- a/packages/types/CHANGELOG.md
+++ b/packages/types/CHANGELOG.md
@@ -3,6 +3,17 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [4.16.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.2...v4.16.0) (2021-03-01)
+
+
+### Features
+
+* TypeScript 4.2 syntax support ([#3112](https://github.com/typescript-eslint/typescript-eslint/issues/3112)) ([2ebfb21](https://github.com/typescript-eslint/typescript-eslint/commit/2ebfb21ba6c88c793cfbd0e231e5803b2381694c))
+
+
+
+
+
## [4.15.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.1...v4.15.2) (2021-02-22)
diff --git a/packages/types/package.json b/packages/types/package.json
index 1c3d35f79385..31a33f8e5475 100644
--- a/packages/types/package.json
+++ b/packages/types/package.json
@@ -1,6 +1,6 @@
{
"name": "@typescript-eslint/types",
- "version": "4.15.2",
+ "version": "4.16.0",
"description": "Types for the TypeScript-ESTree AST spec",
"keywords": [
"eslint",
diff --git a/packages/types/src/ast-node-types.ts b/packages/types/src/ast-node-types.ts
index 091e9d3bb945..f233d60f8aeb 100644
--- a/packages/types/src/ast-node-types.ts
+++ b/packages/types/src/ast-node-types.ts
@@ -47,6 +47,7 @@ enum AST_NODE_TYPES {
JSXFragment = 'JSXFragment',
JSXIdentifier = 'JSXIdentifier',
JSXMemberExpression = 'JSXMemberExpression',
+ JSXNamespacedName = 'JSXNamespacedName',
JSXOpeningElement = 'JSXOpeningElement',
JSXOpeningFragment = 'JSXOpeningFragment',
JSXSpreadAttribute = 'JSXSpreadAttribute',
diff --git a/packages/types/src/ts-estree.ts b/packages/types/src/ts-estree.ts
index e341088f2011..9fee42b8ff9b 100644
--- a/packages/types/src/ts-estree.ts
+++ b/packages/types/src/ts-estree.ts
@@ -188,6 +188,7 @@ export type Node =
| JSXFragment
| JSXIdentifier
| JSXMemberExpression
+ | JSXNamespacedName
| JSXOpeningElement
| JSXOpeningFragment
| JSXSpreadAttribute
@@ -374,6 +375,7 @@ export type Expression =
| SequenceExpression
| SpreadElement
| TSAsExpression
+ | TSTypeAssertion
| TSUnaryExpression
| YieldExpression;
export type ForInitialiser = Expression | VariableDeclaration;
@@ -398,7 +400,10 @@ export type JSXExpression =
| JSXEmptyExpression
| JSXSpreadChild
| JSXExpressionContainer;
-export type JSXTagNameExpression = JSXIdentifier | JSXMemberExpression;
+export type JSXTagNameExpression =
+ | JSXIdentifier
+ | JSXMemberExpression
+ | JSXNamespacedName;
export type LeftHandSideExpression =
| CallExpression
| ClassExpression
@@ -1024,7 +1029,7 @@ export interface ImportSpecifier extends BaseNode {
export interface JSXAttribute extends BaseNode {
type: AST_NODE_TYPES.JSXAttribute;
- name: JSXIdentifier;
+ name: JSXIdentifier | JSXNamespacedName;
value: Literal | JSXExpression | null;
}
@@ -1071,6 +1076,12 @@ export interface JSXMemberExpression extends BaseNode {
property: JSXIdentifier;
}
+export interface JSXNamespacedName extends BaseNode {
+ type: AST_NODE_TYPES.JSXNamespacedName;
+ namespace: JSXIdentifier;
+ name: JSXIdentifier;
+}
+
export interface JSXOpeningElement extends BaseNode {
type: AST_NODE_TYPES.JSXOpeningElement;
typeParameters?: TSTypeParameterInstantiation;
@@ -1340,6 +1351,7 @@ export interface TSConditionalType extends BaseNode {
export interface TSConstructorType extends FunctionSignatureBase {
type: AST_NODE_TYPES.TSConstructorType;
+ abstract: boolean;
}
export interface TSConstructSignatureDeclaration extends FunctionSignatureBase {
diff --git a/packages/typescript-estree/CHANGELOG.md b/packages/typescript-estree/CHANGELOG.md
index ead4936db41e..ba3a7474799b 100644
--- a/packages/typescript-estree/CHANGELOG.md
+++ b/packages/typescript-estree/CHANGELOG.md
@@ -3,6 +3,18 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [4.16.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.2...v4.16.0) (2021-03-01)
+
+
+### Features
+
+* TypeScript 4.2 syntax support ([#3112](https://github.com/typescript-eslint/typescript-eslint/issues/3112)) ([2ebfb21](https://github.com/typescript-eslint/typescript-eslint/commit/2ebfb21ba6c88c793cfbd0e231e5803b2381694c))
+* **typescript-estree:** throw custom error instead of plain object ([#3011](https://github.com/typescript-eslint/typescript-eslint/issues/3011)) ([ae14bf5](https://github.com/typescript-eslint/typescript-eslint/commit/ae14bf55fe31b0eb982ba17333e4aac550d10342))
+
+
+
+
+
## [4.15.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.1...v4.15.2) (2021-02-22)
diff --git a/packages/typescript-estree/package.json b/packages/typescript-estree/package.json
index 73f1317acbcc..fea793261173 100644
--- a/packages/typescript-estree/package.json
+++ b/packages/typescript-estree/package.json
@@ -1,6 +1,6 @@
{
"name": "@typescript-eslint/typescript-estree",
- "version": "4.15.2",
+ "version": "4.16.0",
"description": "A parser that converts TypeScript source code into an ESTree compatible form",
"main": "dist/index.js",
"types": "dist/index.d.ts",
@@ -41,8 +41,8 @@
"typecheck": "tsc -p tsconfig.json --noEmit"
},
"dependencies": {
- "@typescript-eslint/types": "4.15.2",
- "@typescript-eslint/visitor-keys": "4.15.2",
+ "@typescript-eslint/types": "4.16.0",
+ "@typescript-eslint/visitor-keys": "4.16.0",
"debug": "^4.1.1",
"globby": "^11.0.1",
"is-glob": "^4.0.1",
@@ -51,15 +51,15 @@
},
"devDependencies": {
"@babel/code-frame": "^7.12.13",
- "@babel/parser": "^7.12.16",
- "@babel/types": "^7.12.13",
+ "@babel/parser": "^7.13.4",
+ "@babel/types": "^7.13.0",
"@types/babel__code-frame": "*",
"@types/debug": "*",
"@types/glob": "*",
"@types/is-glob": "*",
"@types/semver": "*",
"@types/tmp": "*",
- "@typescript-eslint/shared-fixtures": "4.15.2",
+ "@typescript-eslint/shared-fixtures": "4.16.0",
"glob": "*",
"jest-specific-snapshot": "*",
"make-dir": "*",
diff --git a/packages/typescript-estree/src/convert.ts b/packages/typescript-estree/src/convert.ts
index 762df318e6d7..28442094c2cd 100644
--- a/packages/typescript-estree/src/convert.ts
+++ b/packages/typescript-estree/src/convert.ts
@@ -517,6 +517,46 @@ export class Converter {
return result;
}
+ private convertJSXIdentifier(
+ node: ts.Identifier | ts.ThisExpression,
+ ): TSESTree.JSXIdentifier {
+ const result = this.createNode(node, {
+ type: AST_NODE_TYPES.JSXIdentifier,
+ name: node.getText(),
+ });
+ this.registerTSNodeInNodeMap(node, result);
+ return result;
+ }
+
+ private convertJSXNamespaceOrIdentifier(
+ node: ts.Identifier | ts.ThisExpression,
+ ): TSESTree.JSXIdentifier | TSESTree.JSXNamespacedName {
+ const text = node.getText();
+ const colonIndex = text.indexOf(':');
+ // this is intentional we can ignore conversion if `:` is in first character
+ if (colonIndex > 0) {
+ const range = getRange(node, this.ast);
+ const result = this.createNode(node, {
+ type: AST_NODE_TYPES.JSXNamespacedName,
+ namespace: this.createNode(node, {
+ type: AST_NODE_TYPES.JSXIdentifier,
+ name: text.slice(0, colonIndex),
+ range: [range[0], range[0] + colonIndex],
+ }),
+ name: this.createNode(node, {
+ type: AST_NODE_TYPES.JSXIdentifier,
+ name: text.slice(colonIndex + 1),
+ range: [range[0] + colonIndex + 1, range[1]],
+ }),
+ range,
+ });
+ this.registerTSNodeInNodeMap(node, result);
+ return result;
+ }
+
+ return this.convertJSXIdentifier(node);
+ }
+
/**
* Converts a TypeScript JSX node.tagName into an ESTree node.name
* @param node the tagName object from a JSX ts.Node
@@ -526,8 +566,8 @@ export class Converter {
private convertJSXTagName(
node: ts.JsxTagNameExpression,
parent: ts.Node,
- ): TSESTree.JSXMemberExpression | TSESTree.JSXIdentifier {
- let result: TSESTree.JSXMemberExpression | TSESTree.JSXIdentifier;
+ ): TSESTree.JSXTagNameExpression {
+ let result: TSESTree.JSXTagNameExpression;
switch (node.kind) {
case SyntaxKind.PropertyAccessExpression:
if (node.name.kind === SyntaxKind.PrivateIdentifier) {
@@ -539,27 +579,14 @@ export class Converter {
result = this.createNode(node, {
type: AST_NODE_TYPES.JSXMemberExpression,
object: this.convertJSXTagName(node.expression, parent),
- property: this.convertJSXTagName(
- node.name,
- parent,
- ) as TSESTree.JSXIdentifier,
+ property: this.convertJSXIdentifier(node.name),
});
break;
case SyntaxKind.ThisKeyword:
- result = this.createNode(node, {
- type: AST_NODE_TYPES.JSXIdentifier,
- name: 'this',
- });
- break;
-
case SyntaxKind.Identifier:
default:
- result = this.createNode(node, {
- type: AST_NODE_TYPES.JSXIdentifier,
- name: node.text,
- });
- break;
+ return this.convertJSXNamespaceOrIdentifier(node);
}
this.registerTSNodeInNodeMap(node, result);
@@ -2113,12 +2140,9 @@ export class Converter {
}
case SyntaxKind.JsxAttribute: {
- const attributeName = this.convertChild(node.name);
- attributeName.type = AST_NODE_TYPES.JSXIdentifier;
-
return this.createNode(node, {
type: AST_NODE_TYPES.JSXAttribute,
- name: attributeName,
+ name: this.convertJSXNamespaceOrIdentifier(node.name),
value: this.convertChild(node.initializer),
});
}
@@ -2407,36 +2431,40 @@ export class Converter {
}
return result;
}
- case SyntaxKind.ConstructorType:
+ case SyntaxKind.ConstructorType: {
+ const result = this.createNode(node, {
+ type: AST_NODE_TYPES.TSConstructorType,
+ params: this.convertParameters(node.parameters),
+ abstract: hasModifier(SyntaxKind.AbstractKeyword, node),
+ });
+ if (node.type) {
+ result.returnType = this.convertTypeAnnotation(node.type, node);
+ }
+ if (node.typeParameters) {
+ result.typeParameters = this.convertTSTypeParametersToTypeParametersDeclaration(
+ node.typeParameters,
+ );
+ }
+ return result;
+ }
+
case SyntaxKind.FunctionType:
case SyntaxKind.ConstructSignature:
case SyntaxKind.CallSignature: {
- let type: AST_NODE_TYPES;
- switch (node.kind) {
- case SyntaxKind.ConstructSignature:
- type = AST_NODE_TYPES.TSConstructSignatureDeclaration;
- break;
- case SyntaxKind.CallSignature:
- type = AST_NODE_TYPES.TSCallSignatureDeclaration;
- break;
- case SyntaxKind.FunctionType:
- type = AST_NODE_TYPES.TSFunctionType;
- break;
- case SyntaxKind.ConstructorType:
- default:
- type = AST_NODE_TYPES.TSConstructorType;
- break;
- }
+ const type =
+ node.kind === SyntaxKind.ConstructSignature
+ ? AST_NODE_TYPES.TSConstructSignatureDeclaration
+ : node.kind === SyntaxKind.CallSignature
+ ? AST_NODE_TYPES.TSCallSignatureDeclaration
+ : AST_NODE_TYPES.TSFunctionType;
const result = this.createNode<
- | TSESTree.TSConstructSignatureDeclaration
- | TSESTree.TSCallSignatureDeclaration
| TSESTree.TSFunctionType
- | TSESTree.TSConstructorType
+ | TSESTree.TSCallSignatureDeclaration
+ | TSESTree.TSConstructSignatureDeclaration
>(node, {
type: type,
params: this.convertParameters(node.parameters),
});
-
if (node.type) {
result.returnType = this.convertTypeAnnotation(node.type, node);
}
@@ -2446,7 +2474,6 @@ export class Converter {
node.typeParameters,
);
}
-
return result;
}
@@ -2694,7 +2721,7 @@ export class Converter {
? (node as any).elementTypes.map((el: ts.Node) =>
this.convertType(el),
)
- : node.elements.map((el: ts.Node) => this.convertType(el));
+ : node.elements.map(el => this.convertType(el));
return this.createNode(node, {
type: AST_NODE_TYPES.TSTupleType,
diff --git a/packages/typescript-estree/src/node-utils.ts b/packages/typescript-estree/src/node-utils.ts
index c9eef0fba760..eb88660fdfa3 100644
--- a/packages/typescript-estree/src/node-utils.ts
+++ b/packages/typescript-estree/src/node-utils.ts
@@ -165,7 +165,9 @@ export function getLastModifier(node: ts.Node): ts.Modifier | null {
* @param token the TypeScript token
* @returns is comma
*/
-export function isComma(token: ts.Node): boolean {
+export function isComma(
+ token: ts.Node,
+): token is ts.Token {
return token.kind === SyntaxKind.CommaToken;
}
@@ -186,7 +188,7 @@ export function isComment(node: ts.Node): boolean {
* @param node the TypeScript node
* @returns is JSDoc comment
*/
-export function isJSDocComment(node: ts.Node): boolean {
+export function isJSDocComment(node: ts.Node): node is ts.JSDoc {
return node.kind === SyntaxKind.JSDocComment;
}
@@ -285,7 +287,7 @@ export function getRange(node: ts.Node, ast: ts.SourceFile): [number, number] {
* @param node the ts.Node
* @returns is a token
*/
-export function isToken(node: ts.Node): boolean {
+export function isToken(node: ts.Node): node is ts.Token {
return (
node.kind >= SyntaxKind.FirstToken && node.kind <= SyntaxKind.LastToken
);
@@ -434,7 +436,9 @@ export function unescapeStringLiteralText(text: string): string {
* @param node ts.Node to be checked
* @returns is Computed Property
*/
-export function isComputedProperty(node: ts.Node): boolean {
+export function isComputedProperty(
+ node: ts.Node,
+): node is ts.ComputedPropertyName {
return node.kind === SyntaxKind.ComputedPropertyName;
}
@@ -471,15 +475,11 @@ export function isChildUnwrappableOptionalChain(
| ts.NonNullExpression,
child: TSESTree.Node,
): boolean {
- if (
+ return (
isChainExpression(child) &&
// (x?.y).z is semantically different, and as such .z is no longer optional
node.expression.kind !== ts.SyntaxKind.ParenthesizedExpression
- ) {
- return true;
- }
-
- return false;
+ );
}
/**
@@ -586,7 +586,7 @@ export function getTokenType(
* @returns the converted Token
*/
export function convertToken(
- token: ts.Node,
+ token: ts.Token,
ast: ts.SourceFile,
): TSESTree.Token {
const start =
@@ -649,16 +649,26 @@ export function convertTokens(ast: ts.SourceFile): TSESTree.Token[] {
return result;
}
-export interface TSError {
- index: number;
- lineNumber: number;
- column: number;
- message: string;
+export class TSError extends Error {
+ constructor(
+ message: string,
+ public readonly fileName: string,
+ public readonly index: number,
+ public readonly lineNumber: number,
+ public readonly column: number,
+ ) {
+ super(message);
+ Object.defineProperty(this, 'name', {
+ value: new.target.name,
+ enumerable: false,
+ configurable: true,
+ });
+ }
}
/**
* @param ast the AST object
- * @param start the index at which the error starts
+ * @param start the index at which the error starts
* @param message the error message
* @returns converted error object
*/
@@ -668,12 +678,7 @@ export function createError(
message: string,
): TSError {
const loc = ast.getLineAndCharacterOfPosition(start);
- return {
- index: start,
- lineNumber: loc.line + 1,
- column: loc.character,
- message,
- };
+ return new TSError(message, ast.fileName, start, loc.line + 1, loc.character);
}
/**
diff --git a/packages/typescript-estree/src/ts-estree/estree-to-ts-node-types.ts b/packages/typescript-estree/src/ts-estree/estree-to-ts-node-types.ts
index 2eebfc93b127..92ef8c42e604 100644
--- a/packages/typescript-estree/src/ts-estree/estree-to-ts-node-types.ts
+++ b/packages/typescript-estree/src/ts-estree/estree-to-ts-node-types.ts
@@ -93,6 +93,7 @@ export interface EstreeToTsNodeTypes {
[AST_NODE_TYPES.JSXSpreadAttribute]: ts.JsxSpreadAttribute;
[AST_NODE_TYPES.JSXSpreadChild]: ts.JsxExpression;
[AST_NODE_TYPES.JSXMemberExpression]: ts.PropertyAccessExpression;
+ [AST_NODE_TYPES.JSXNamespacedName]: ts.Identifier | ts.ThisExpression;
[AST_NODE_TYPES.JSXText]: ts.JsxText;
[AST_NODE_TYPES.LabeledStatement]: ts.LabeledStatement;
[AST_NODE_TYPES.Literal]:
@@ -157,15 +158,11 @@ export interface EstreeToTsNodeTypes {
| ts.ConstructorDeclaration;
[AST_NODE_TYPES.TSArrayType]: ts.ArrayTypeNode;
[AST_NODE_TYPES.TSAsExpression]: ts.AsExpression;
- [AST_NODE_TYPES.TSCallSignatureDeclaration]: ts.PropertySignature;
+ [AST_NODE_TYPES.TSCallSignatureDeclaration]: ts.CallSignatureDeclaration;
[AST_NODE_TYPES.TSClassImplements]: ts.ExpressionWithTypeArguments;
[AST_NODE_TYPES.TSConditionalType]: ts.ConditionalTypeNode;
[AST_NODE_TYPES.TSConstructorType]: ts.ConstructorTypeNode;
- [AST_NODE_TYPES.TSConstructSignatureDeclaration]:
- | ts.ConstructorTypeNode
- | ts.FunctionTypeNode
- | ts.ConstructSignatureDeclaration
- | ts.CallSignatureDeclaration;
+ [AST_NODE_TYPES.TSConstructSignatureDeclaration]: ts.ConstructSignatureDeclaration;
[AST_NODE_TYPES.TSDeclareFunction]: ts.FunctionDeclaration;
[AST_NODE_TYPES.TSEnumDeclaration]: ts.EnumDeclaration;
[AST_NODE_TYPES.TSEnumMember]: ts.EnumMember;
diff --git a/packages/typescript-estree/tests/ast-alignment/fixtures-to-test.ts b/packages/typescript-estree/tests/ast-alignment/fixtures-to-test.ts
index 0515aa57f4d9..4acae2c6a5bd 100644
--- a/packages/typescript-estree/tests/ast-alignment/fixtures-to-test.ts
+++ b/packages/typescript-estree/tests/ast-alignment/fixtures-to-test.ts
@@ -299,16 +299,6 @@ tester.addFixturePatternConfig('jsx', {
* https://github.com/Microsoft/TypeScript/issues/7410
*/
'embedded-tags',
- /**
- * JSX fixtures which have known issues for typescript-estree
- * @see https://github.com/Microsoft/TypeScript/issues/7411
- */
- 'namespaced-attribute-and-value-inserted',
- /**
- * JSX fixtures which have known issues for typescript-estree
- * @see https://github.com/Microsoft/TypeScript/issues/7411
- */
- 'namespaced-name-and-attribute',
/**
* Current random error difference on jsx/invalid-no-tag-name.src.js
* ts-estree - SyntaxError
@@ -316,6 +306,12 @@ tester.addFixturePatternConfig('jsx', {
* @see https://github.com/babel/babel/issues/6680
*/
'invalid-no-tag-name',
+ /**
+ * [BABEL ERRORED, BUT TS-ESTREE DID NOT]
+ * SyntaxError: Unexpected token
+ * TODO: investigate if this code is valid as there is no typescript error
+ */
+ 'invalid-namespace-value-with-dots',
],
});
tester.addFixturePatternConfig('jsx-useJSXTextNode');
@@ -346,7 +342,7 @@ tester.addFixturePatternConfig('typescript/basics', {
/**
* Babel parses it as TSQualifiedName
* ts parses it as MemberExpression
- * TODO: report it to babel
+ * @see https://github.com/babel/babel/issues/12884
*/
'interface-with-extends-member-expression',
/**
@@ -387,7 +383,7 @@ tester.addFixturePatternConfig('typescript/basics', {
'import-type-error',
/**
* [TS-ESTREE ERRORED, BUT BABEL DID NOT]
- * TODO: report this to babel
+ * This is intentional; babel is not checking types
*/
'catch-clause-with-invalid-annotation',
],
diff --git a/packages/typescript-estree/tests/ast-fixtures.test.ts b/packages/typescript-estree/tests/ast-fixtures.test.ts
index 339378a6883c..613595e4f8aa 100644
--- a/packages/typescript-estree/tests/ast-fixtures.test.ts
+++ b/packages/typescript-estree/tests/ast-fixtures.test.ts
@@ -1,10 +1,13 @@
import fs from 'fs';
import glob from 'glob';
-import 'jest-specific-snapshot';
+import { addSerializer } from 'jest-specific-snapshot';
import makeDir from 'make-dir';
import path from 'path';
import { parseAndGenerateServices } from '../src/parser';
import { isJSXFileType } from '../tools/test-utils';
+import { serializer } from '../tools/tserror-serializer';
+
+addSerializer(serializer);
// Assign a segment set to this variable to limit the test to only this segment
// This is super helpful if you need to debug why a specific fixture isn't producing the correct output
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 2aa60bf249ea..eb7e5c687e68 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
@@ -81,7 +81,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/arrowFunctions/error-dup-params.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/arrowFunctions/error-missing-paren.src 1`] = `
-Object {
+TSError {
"column": 9,
"index": 9,
"lineNumber": 1,
@@ -90,7 +90,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/arrowFunctions/error-not-arrow.src 1`] = `
-Object {
+TSError {
"column": 26,
"index": 26,
"lineNumber": 1,
@@ -99,7 +99,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/arrowFunctions/error-numeric-param.src 1`] = `
-Object {
+TSError {
"column": 5,
"index": 5,
"lineNumber": 1,
@@ -108,7 +108,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/arrowFunctions/error-numeric-param-multi.src 1`] = `
-Object {
+TSError {
"column": 9,
"index": 9,
"lineNumber": 1,
@@ -117,7 +117,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/arrowFunctions/error-reverse-arrow.src 1`] = `
-Object {
+TSError {
"column": 1,
"index": 1,
"lineNumber": 1,
@@ -134,7 +134,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/arrowFunctions/error-strict-eval-return.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/arrowFunctions/error-strict-octal.src 1`] = `
-Object {
+TSError {
"column": 21,
"index": 21,
"lineNumber": 1,
@@ -153,7 +153,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/arrowFunctions/error-strict-param-no-paren-eval.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/arrowFunctions/error-two-lines.src 1`] = `
-Object {
+TSError {
"column": 1,
"index": 12,
"lineNumber": 2,
@@ -162,7 +162,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/arrowFunctions/error-wrapped-param.src 1`] = `
-Object {
+TSError {
"column": 6,
"index": 6,
"lineNumber": 1,
@@ -229,7 +229,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/bigIntLiterals/octal.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/binaryLiterals/invalid.src 1`] = `
-Object {
+TSError {
"column": 4,
"index": 4,
"lineNumber": 1,
@@ -302,7 +302,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/classes/class-with-constructor-with-space.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/classes/class-with-no-body.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 10,
"lineNumber": 2,
@@ -323,7 +323,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/classes/empty-literal-derived-class.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/classes/invalid-class-declaration.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 0,
"lineNumber": 1,
@@ -332,7 +332,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/classes/invalid-class-setter-declaration.src 1`] = `
-Object {
+TSError {
"column": 14,
"index": 14,
"lineNumber": 1,
@@ -341,7 +341,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/classes/invalid-class-two-super-classes.src 1`] = `
-Object {
+TSError {
"column": 18,
"index": 18,
"lineNumber": 1,
@@ -440,7 +440,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/destructuring/destructured-object-catch.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/destructuring/invalid-defaults-object-assign.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 0,
"lineNumber": 1,
@@ -525,7 +525,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/destructuring-and-spread/destructuring-param.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/destructuring-and-spread/error-complex-destructured-spread-first.src 1`] = `
-Object {
+TSError {
"column": 1,
"index": 1,
"lineNumber": 1,
@@ -534,7 +534,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/destructuring-and-spread/invalid-not-final-array-empty.src 1`] = `
-Object {
+TSError {
"column": 5,
"index": 5,
"lineNumber": 1,
@@ -545,7 +545,7 @@ Object {
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/destructuring-and-spread/multi-destructured.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/destructuring-and-spread/not-final-array.src 1`] = `
-Object {
+TSError {
"column": 1,
"index": 1,
"lineNumber": 1,
@@ -588,7 +588,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/experimentalDynamicImport/dynamic-import.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/experimentalDynamicImport/error-dynamic-import-params.src 1`] = `
-Object {
+TSError {
"column": 7,
"index": 7,
"lineNumber": 1,
@@ -603,7 +603,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/experimentalObjectRestSpread/function-parameter-object-spread.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/experimentalObjectRestSpread/invalid-rest.src 1`] = `
-Object {
+TSError {
"column": 18,
"index": 18,
"lineNumber": 1,
@@ -612,7 +612,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/experimentalObjectRestSpread/invalid-rest-trailing-comma.src 1`] = `
-Object {
+TSError {
"column": 16,
"index": 16,
"lineNumber": 1,
@@ -663,7 +663,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/forIn/for-in-destruction-object.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/forIn/for-in-object.src 1`] = `
-Object {
+TSError {
"column": 14,
"index": 14,
"lineNumber": 1,
@@ -694,7 +694,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/forOf/for-of-object.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/forOf/for-of-with-function-initializer.src 1`] = `
-Object {
+TSError {
"column": 9,
"index": 9,
"lineNumber": 1,
@@ -743,7 +743,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/globalReturn/return-true.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/hexLiterals/invalid.src 1`] = `
-Object {
+TSError {
"column": 4,
"index": 4,
"lineNumber": 1,
@@ -864,7 +864,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/modules/invalid-class.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/modules/invalid-export-batch-missing-from-clause.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 9,
"lineNumber": 2,
@@ -873,7 +873,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/modules/invalid-export-batch-token.src 1`] = `
-Object {
+TSError {
"column": 9,
"index": 9,
"lineNumber": 1,
@@ -882,7 +882,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/modules/invalid-export-default.src 1`] = `
-Object {
+TSError {
"column": 20,
"index": 20,
"lineNumber": 1,
@@ -891,7 +891,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/modules/invalid-export-default-equal.src 1`] = `
-Object {
+TSError {
"column": 15,
"index": 15,
"lineNumber": 1,
@@ -900,7 +900,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/modules/invalid-export-default-token.src 1`] = `
-Object {
+TSError {
"column": 17,
"index": 17,
"lineNumber": 1,
@@ -911,7 +911,7 @@ Object {
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/modules/invalid-export-named-default.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/modules/invalid-export-named-extra-comma.src 1`] = `
-Object {
+TSError {
"column": 16,
"index": 16,
"lineNumber": 1,
@@ -920,7 +920,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/modules/invalid-export-named-middle-comma.src 1`] = `
-Object {
+TSError {
"column": 12,
"index": 12,
"lineNumber": 1,
@@ -929,7 +929,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/modules/invalid-import-default.src 1`] = `
-Object {
+TSError {
"column": 7,
"index": 7,
"lineNumber": 1,
@@ -938,7 +938,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/modules/invalid-import-default-after-named.src 1`] = `
-Object {
+TSError {
"column": 12,
"index": 12,
"lineNumber": 1,
@@ -947,7 +947,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/modules/invalid-import-default-after-named-after-default.src 1`] = `
-Object {
+TSError {
"column": 17,
"index": 17,
"lineNumber": 1,
@@ -956,7 +956,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/modules/invalid-import-default-missing-module-specifier.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 11,
"lineNumber": 2,
@@ -965,7 +965,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/modules/invalid-import-default-module-specifier.src 1`] = `
-Object {
+TSError {
"column": 16,
"index": 16,
"lineNumber": 1,
@@ -974,7 +974,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/modules/invalid-import-missing-module-specifier.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 20,
"lineNumber": 2,
@@ -983,7 +983,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/modules/invalid-import-module-specifier.src 1`] = `
-Object {
+TSError {
"column": 18,
"index": 18,
"lineNumber": 1,
@@ -992,7 +992,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/modules/invalid-import-named-after-named.src 1`] = `
-Object {
+TSError {
"column": 12,
"index": 12,
"lineNumber": 1,
@@ -1001,7 +1001,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/modules/invalid-import-named-after-namespace.src 1`] = `
-Object {
+TSError {
"column": 15,
"index": 15,
"lineNumber": 1,
@@ -1010,7 +1010,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/modules/invalid-import-named-as-missing-from.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 24,
"lineNumber": 2,
@@ -1019,7 +1019,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/modules/invalid-import-named-extra-comma.src 1`] = `
-Object {
+TSError {
"column": 16,
"index": 16,
"lineNumber": 1,
@@ -1028,7 +1028,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/modules/invalid-import-named-middle-comma.src 1`] = `
-Object {
+TSError {
"column": 12,
"index": 12,
"lineNumber": 1,
@@ -1037,7 +1037,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/modules/invalid-import-namespace-after-named.src 1`] = `
-Object {
+TSError {
"column": 12,
"index": 12,
"lineNumber": 1,
@@ -1046,7 +1046,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/modules/invalid-import-namespace-missing-as.src 1`] = `
-Object {
+TSError {
"column": 9,
"index": 9,
"lineNumber": 1,
@@ -1055,7 +1055,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/newTarget/invalid-new-target.src 1`] = `
-Object {
+TSError {
"column": 8,
"index": 8,
"lineNumber": 1,
@@ -1064,7 +1064,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/newTarget/invalid-unknown-property.src 1`] = `
-Object {
+TSError {
"column": 25,
"index": 25,
"lineNumber": 1,
@@ -1087,7 +1087,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/objectLiteralComputedProperties/computed-variable-property.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/objectLiteralComputedProperties/invalid-computed-variable-property.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 20,
"lineNumber": 3,
@@ -1096,7 +1096,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/objectLiteralComputedProperties/invalid-standalone-computed-variable-property.src 1`] = `
-Object {
+TSError {
"column": 5,
"index": 5,
"lineNumber": 1,
@@ -1111,7 +1111,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/objectLiteralComputedProperties/standalone-expression-with-method.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/objectLiteralDuplicateProperties/error-proto-property.src 1`] = `
-Object {
+TSError {
"column": 1,
"index": 62,
"lineNumber": 7,
@@ -1122,7 +1122,7 @@ Object {
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/objectLiteralDuplicateProperties/error-proto-string-property.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/objectLiteralDuplicateProperties/strict-duplicate-properties.src 1`] = `
-Object {
+TSError {
"column": 1,
"index": 39,
"lineNumber": 5,
@@ -1133,7 +1133,7 @@ Object {
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/objectLiteralDuplicateProperties/strict-duplicate-string-properties.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/objectLiteralShorthandMethods/invalid-method-no-braces.src 1`] = `
-Object {
+TSError {
"column": 13,
"index": 19,
"lineNumber": 2,
@@ -1158,7 +1158,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/objectLiteralShorthandProperties/shorthand-properties.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/octalLiterals/invalid.src 1`] = `
-Object {
+TSError {
"column": 4,
"index": 4,
"lineNumber": 1,
@@ -1167,7 +1167,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/octalLiterals/legacy.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 0,
"lineNumber": 1,
@@ -1198,7 +1198,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/restParams/class-method.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/restParams/error-no-default.src 1`] = `
-Object {
+TSError {
"column": 17,
"index": 17,
"lineNumber": 1,
@@ -1207,7 +1207,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/restParams/error-not-last.src 1`] = `
-Object {
+TSError {
"column": 14,
"index": 14,
"lineNumber": 1,
@@ -1240,7 +1240,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/spread/complex-spread.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/spread/error-invalid-if.src 1`] = `
-Object {
+TSError {
"column": 6,
"index": 6,
"lineNumber": 1,
@@ -1249,7 +1249,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/spread/error-invalid-sequence.src 1`] = `
-Object {
+TSError {
"column": 4,
"index": 4,
"lineNumber": 1,
@@ -1288,7 +1288,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/unicodeCodePointEscapes/ignored.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/unicodeCodePointEscapes/invalid-empty-escape.src 1`] = `
-Object {
+TSError {
"column": 4,
"index": 4,
"lineNumber": 1,
@@ -1297,7 +1297,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/javascript/unicodeCodePointEscapes/invalid-too-large-escape.src 1`] = `
-Object {
+TSError {
"column": 10,
"index": 10,
"lineNumber": 1,
@@ -1316,7 +1316,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/embedded-invalid-js-identifier.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/embedded-tags.src 1`] = `
-Object {
+TSError {
"column": 16,
"index": 16,
"lineNumber": 1,
@@ -1335,7 +1335,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/escape-patters-multi.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-attribute.src 1`] = `
-Object {
+TSError {
"column": 5,
"index": 5,
"lineNumber": 1,
@@ -1344,7 +1344,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-attribute-missing-equals.src 1`] = `
-Object {
+TSError {
"column": 14,
"index": 14,
"lineNumber": 1,
@@ -1353,7 +1353,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-broken-tag.src 1`] = `
-Object {
+TSError {
"column": 12,
"index": 12,
"lineNumber": 1,
@@ -1362,7 +1362,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-computed-end-tag-name.src 1`] = `
-Object {
+TSError {
"column": 2,
"index": 2,
"lineNumber": 1,
@@ -1371,7 +1371,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-computed-string-end-tag-name.src 1`] = `
-Object {
+TSError {
"column": 2,
"index": 2,
"lineNumber": 1,
@@ -1380,7 +1380,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-embedded-expression.src 1`] = `
-Object {
+TSError {
"column": 9,
"index": 9,
"lineNumber": 1,
@@ -1389,7 +1389,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-leading-dot-tag-name.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 0,
"lineNumber": 1,
@@ -1398,7 +1398,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-matching-placeholder-in-closing-tag.src 1`] = `
-Object {
+TSError {
"column": 27,
"index": 27,
"lineNumber": 1,
@@ -1407,7 +1407,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-mismatched-closing-tag.src 1`] = `
-Object {
+TSError {
"column": 3,
"index": 3,
"lineNumber": 1,
@@ -1416,7 +1416,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-mismatched-closing-tags.src 1`] = `
-Object {
+TSError {
"column": 1,
"index": 1,
"lineNumber": 1,
@@ -1425,7 +1425,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-mismatched-dot-tag-name.src 1`] = `
-Object {
+TSError {
"column": 7,
"index": 7,
"lineNumber": 1,
@@ -1434,16 +1434,16 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-mismatched-namespace-tag.src 1`] = `
-Object {
- "column": 2,
- "index": 2,
+TSError {
+ "column": 5,
+ "index": 5,
"lineNumber": 1,
- "message": "Identifier expected.",
+ "message": "Expected corresponding JSX closing tag for 'a:b'.",
}
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-missing-closing-tag.src 1`] = `
-Object {
+TSError {
"column": 1,
"index": 1,
"lineNumber": 1,
@@ -1452,7 +1452,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-missing-closing-tag-attribute-placeholder.src 1`] = `
-Object {
+TSError {
"column": 1,
"index": 1,
"lineNumber": 1,
@@ -1461,7 +1461,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-missing-namespace-name.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 0,
"lineNumber": 1,
@@ -1470,7 +1470,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-missing-namespace-value.src 1`] = `
-Object {
+TSError {
"column": 2,
"index": 2,
"lineNumber": 1,
@@ -1479,7 +1479,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-missing-spread-operator.src 1`] = `
-Object {
+TSError {
"column": 6,
"index": 6,
"lineNumber": 1,
@@ -1488,7 +1488,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-namespace-name-with-docts.src 1`] = `
-Object {
+TSError {
"column": 4,
"index": 4,
"lineNumber": 1,
@@ -1496,17 +1496,10 @@ Object {
}
`;
-exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-namespace-value-with-dots.src 1`] = `
-Object {
- "column": 2,
- "index": 2,
- "lineNumber": 1,
- "message": "Identifier expected.",
-}
-`;
+exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-namespace-value-with-dots.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-no-common-parent.src 1`] = `
-Object {
+TSError {
"column": 8,
"index": 8,
"lineNumber": 1,
@@ -1515,7 +1508,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-no-common-parent-with-comment.src 1`] = `
-Object {
+TSError {
"column": 8,
"index": 8,
"lineNumber": 1,
@@ -1524,7 +1517,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-no-tag-name.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 0,
"lineNumber": 1,
@@ -1533,7 +1526,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-placeholder-in-closing-tag.src 1`] = `
-Object {
+TSError {
"column": 16,
"index": 16,
"lineNumber": 1,
@@ -1542,7 +1535,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-shorthand-fragment-no-closing.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 0,
"lineNumber": 1,
@@ -1551,7 +1544,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-trailing-dot-tag-name.src 1`] = `
-Object {
+TSError {
"column": 3,
"index": 3,
"lineNumber": 1,
@@ -1560,7 +1553,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-unexpected-comma.src 1`] = `
-Object {
+TSError {
"column": 19,
"index": 19,
"lineNumber": 1,
@@ -1575,7 +1568,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/member-expression.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/member-expression-private.src 1`] = `
-Object {
+TSError {
"column": 10,
"index": 10,
"lineNumber": 1,
@@ -1587,26 +1580,14 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/multiple-blank-spaces.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
-exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/namespaced-attribute-and-value-inserted.src 1`] = `
-Object {
- "column": 4,
- "index": 4,
- "lineNumber": 1,
- "message": "Identifier expected.",
-}
-`;
+exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/namespace-this-name.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
-exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/namespaced-name-and-attribute.src 1`] = `
-Object {
- "column": 2,
- "index": 2,
- "lineNumber": 1,
- "message": "Identifier expected.",
-}
-`;
+exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/namespaced-attribute-and-value-inserted.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
+
+exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/namespaced-name-and-attribute.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/newslines-and-entities.src 1`] = `
-Object {
+TSError {
"column": 8,
"index": 8,
"lineNumber": 1,
@@ -1619,7 +1600,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/self-closing-tag-inside-tag.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/self-closing-tag-with-newline.src 1`] = `
-Object {
+TSError {
"column": 2,
"index": 2,
"lineNumber": 1,
@@ -1654,7 +1635,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/tsx/generic-jsx-element.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/tsx/generic-jsx-member-expression-private.src 1`] = `
-Object {
+TSError {
"column": 22,
"index": 22,
"lineNumber": 1,
@@ -1671,7 +1652,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/babylon-convergence/type-parameters.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/abstract-class-with-abstract-constructor.src 1`] = `
-Object {
+TSError {
"column": 4,
"index": 43,
"lineNumber": 2,
@@ -1686,7 +1667,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/abstract-class-with-abstract-readonly-property.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/abstract-class-with-abstract-static-constructor.src 1`] = `
-Object {
+TSError {
"column": 2,
"index": 41,
"lineNumber": 2,
@@ -1699,7 +1680,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/abstract-class-with-optional-method.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/abstract-interface.src 1`] = `
-Object {
+TSError {
"column": 7,
"index": 7,
"lineNumber": 1,
@@ -1720,7 +1701,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/async-function-with-var-declaration.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/await-without-async-function.src 1`] = `
-Object {
+TSError {
"column": 14,
"index": 31,
"lineNumber": 2,
@@ -1745,7 +1726,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/catch-clause-with-annotation.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/catch-clause-with-invalid-annotation.src 1`] = `
-Object {
+TSError {
"column": 12,
"index": 19,
"lineNumber": 3,
@@ -1770,7 +1751,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/class-with-definite-assignment.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/class-with-export-parameter-properties.src 1`] = `
-Object {
+TSError {
"column": 16,
"index": 28,
"lineNumber": 2,
@@ -1791,7 +1772,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/class-with-implements.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/class-with-implements-and-extends.src 1`] = `
-Object {
+TSError {
"column": 57,
"index": 57,
"lineNumber": 1,
@@ -1834,7 +1815,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/class-with-readonly-property.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/class-with-static-parameter-properties.src 1`] = `
-Object {
+TSError {
"column": 16,
"index": 28,
"lineNumber": 2,
@@ -1891,7 +1872,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/export-named-enum.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/export-named-enum-computed-number.src 1`] = `
-Object {
+TSError {
"column": 4,
"index": 22,
"lineNumber": 2,
@@ -1902,7 +1883,7 @@ Object {
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/export-named-enum-computed-string.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/export-named-enum-computed-var-ref.src 1`] = `
-Object {
+TSError {
"column": 4,
"index": 22,
"lineNumber": 2,
@@ -1971,7 +1952,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/interface-with-all-property-types.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/interface-with-construct-signature-with-parameter-accessibility.src 1`] = `
-Object {
+TSError {
"column": 9,
"index": 26,
"lineNumber": 2,
@@ -2004,7 +1985,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/never-type-param.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/new-target-in-arrow-function-body.src 1`] = `
-Object {
+TSError {
"column": 16,
"index": 16,
"lineNumber": 1,
@@ -2207,7 +2188,7 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/decorators/property-decorators/property-decorator-static-member.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/class-empty-extends.src 1`] = `
-Object {
+TSError {
"column": 17,
"index": 17,
"lineNumber": 1,
@@ -2216,7 +2197,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/class-empty-extends-implements.src 1`] = `
-Object {
+TSError {
"column": 17,
"index": 17,
"lineNumber": 1,
@@ -2225,7 +2206,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/class-extends-empty-implements.src 1`] = `
-Object {
+TSError {
"column": 32,
"index": 32,
"lineNumber": 1,
@@ -2234,7 +2215,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/class-multiple-implements.src 1`] = `
-Object {
+TSError {
"column": 21,
"index": 21,
"lineNumber": 1,
@@ -2243,7 +2224,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/decorator-on-enum-declaration.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 0,
"lineNumber": 1,
@@ -2252,7 +2233,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/decorator-on-function.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 0,
"lineNumber": 1,
@@ -2261,7 +2242,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/decorator-on-interface-declaration.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 0,
"lineNumber": 1,
@@ -2270,7 +2251,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/decorator-on-variable.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 0,
"lineNumber": 1,
@@ -2279,7 +2260,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-arguments.src 1`] = `
-Object {
+TSError {
"column": 14,
"index": 14,
"lineNumber": 1,
@@ -2288,7 +2269,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-arguments-in-call-expression.src 1`] = `
-Object {
+TSError {
"column": 3,
"index": 3,
"lineNumber": 1,
@@ -2297,7 +2278,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-arguments-in-new-expression.src 1`] = `
-Object {
+TSError {
"column": 7,
"index": 7,
"lineNumber": 1,
@@ -2306,7 +2287,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-parameters.src 1`] = `
-Object {
+TSError {
"column": 11,
"index": 11,
"lineNumber": 1,
@@ -2315,7 +2296,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-parameters-in-arrow-function.src 1`] = `
-Object {
+TSError {
"column": 11,
"index": 11,
"lineNumber": 1,
@@ -2324,7 +2305,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-parameters-in-constructor.src 1`] = `
-Object {
+TSError {
"column": 13,
"index": 25,
"lineNumber": 2,
@@ -2333,7 +2314,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-parameters-in-function-expression.src 1`] = `
-Object {
+TSError {
"column": 20,
"index": 20,
"lineNumber": 1,
@@ -2342,7 +2323,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-parameters-in-method.src 1`] = `
-Object {
+TSError {
"column": 6,
"index": 18,
"lineNumber": 2,
@@ -2351,7 +2332,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-parameters-in-method-signature.src 1`] = `
-Object {
+TSError {
"column": 6,
"index": 22,
"lineNumber": 2,
@@ -2360,7 +2341,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/enum-with-keywords.src 1`] = `
-Object {
+TSError {
"column": 7,
"index": 7,
"lineNumber": 1,
@@ -2369,7 +2350,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/index-signature-parameters.src 1`] = `
-Object {
+TSError {
"column": 3,
"index": 16,
"lineNumber": 2,
@@ -2378,7 +2359,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/interface-empty-extends.src 1`] = `
-Object {
+TSError {
"column": 21,
"index": 21,
"lineNumber": 1,
@@ -2387,7 +2368,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/interface-implements.src 1`] = `
-Object {
+TSError {
"column": 12,
"index": 12,
"lineNumber": 1,
@@ -2396,7 +2377,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/interface-index-signature-export.src 1`] = `
-Object {
+TSError {
"column": 2,
"index": 18,
"lineNumber": 2,
@@ -2405,7 +2386,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/interface-index-signature-private.src 1`] = `
-Object {
+TSError {
"column": 2,
"index": 18,
"lineNumber": 2,
@@ -2414,7 +2395,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/interface-index-signature-protected.src 1`] = `
-Object {
+TSError {
"column": 2,
"index": 18,
"lineNumber": 2,
@@ -2423,7 +2404,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/interface-index-signature-public.src 1`] = `
-Object {
+TSError {
"column": 2,
"index": 18,
"lineNumber": 2,
@@ -2432,7 +2413,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/interface-index-signature-static.src 1`] = `
-Object {
+TSError {
"column": 2,
"index": 18,
"lineNumber": 2,
@@ -2441,7 +2422,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/interface-method-export.src 1`] = `
-Object {
+TSError {
"column": 4,
"index": 20,
"lineNumber": 2,
@@ -2450,7 +2431,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/interface-method-private.src 1`] = `
-Object {
+TSError {
"column": 4,
"index": 20,
"lineNumber": 2,
@@ -2459,7 +2440,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/interface-method-protected.src 1`] = `
-Object {
+TSError {
"column": 2,
"index": 18,
"lineNumber": 2,
@@ -2468,7 +2449,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/interface-method-public.src 1`] = `
-Object {
+TSError {
"column": 4,
"index": 20,
"lineNumber": 2,
@@ -2479,7 +2460,7 @@ Object {
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/interface-method-readonly.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/interface-method-static.src 1`] = `
-Object {
+TSError {
"column": 2,
"index": 18,
"lineNumber": 2,
@@ -2488,7 +2469,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/interface-multiple-extends.src 1`] = `
-Object {
+TSError {
"column": 26,
"index": 26,
"lineNumber": 1,
@@ -2497,7 +2478,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/interface-property-export.src 1`] = `
-Object {
+TSError {
"column": 2,
"index": 18,
"lineNumber": 2,
@@ -2506,7 +2487,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/interface-property-private.src 1`] = `
-Object {
+TSError {
"column": 2,
"index": 18,
"lineNumber": 2,
@@ -2515,7 +2496,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/interface-property-protected.src 1`] = `
-Object {
+TSError {
"column": 2,
"index": 18,
"lineNumber": 2,
@@ -2524,7 +2505,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/interface-property-public.src 1`] = `
-Object {
+TSError {
"column": 4,
"index": 20,
"lineNumber": 2,
@@ -2533,7 +2514,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/interface-property-static.src 1`] = `
-Object {
+TSError {
"column": 2,
"index": 18,
"lineNumber": 2,
@@ -2542,7 +2523,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/interface-property-with-default-value.src 1`] = `
-Object {
+TSError {
"column": 16,
"index": 32,
"lineNumber": 2,
@@ -2551,7 +2532,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/interface-with-no-body.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 14,
"lineNumber": 2,
@@ -2562,7 +2543,7 @@ Object {
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/interface-with-optional-index-signature.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/object-assertion-not-allowed.src 1`] = `
-Object {
+TSError {
"column": 3,
"index": 3,
"lineNumber": 1,
@@ -2571,7 +2552,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/object-optional-not-allowed.src 1`] = `
-Object {
+TSError {
"column": 3,
"index": 3,
"lineNumber": 1,
@@ -2580,7 +2561,7 @@ Object {
`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/solo-const.src 1`] = `
-Object {
+TSError {
"column": 5,
"index": 5,
"lineNumber": 1,
@@ -2622,6 +2603,10 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/types/constructor.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
+exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/types/constructor-abstract.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
+
+exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/types/constructor-empty.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
+
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/types/constructor-generic.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/types/constructor-in-generic.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
diff --git a/packages/typescript-estree/tests/lib/semantic-diagnostics-enabled.test.ts b/packages/typescript-estree/tests/lib/semantic-diagnostics-enabled.test.ts
index 3cbe87f9f552..eefd71a587e8 100644
--- a/packages/typescript-estree/tests/lib/semantic-diagnostics-enabled.test.ts
+++ b/packages/typescript-estree/tests/lib/semantic-diagnostics-enabled.test.ts
@@ -3,6 +3,7 @@ import glob from 'glob';
import path from 'path';
import * as parser from '../../src';
import { formatSnapshotName, isJSXFileType } from '../../tools/test-utils';
+import { serializer } from '../../tools/tserror-serializer';
/**
* Process all fixtures, we will only snapshot the ones that have semantic errors
@@ -10,10 +11,12 @@ import { formatSnapshotName, isJSXFileType } from '../../tools/test-utils';
*/
const FIXTURES_DIR = path.join(__dirname, '../../../shared-fixtures/fixtures');
-const testFiles = glob.sync(`**/*.src.*`, {
+const testFiles = glob.sync('**/*.src.*', {
cwd: FIXTURES_DIR,
});
+expect.addSnapshotSerializer(serializer);
+
describe('Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled', () => {
testFiles.forEach(filename => {
const code = readFileSync(path.join(FIXTURES_DIR, filename), 'utf8');
diff --git a/packages/typescript-estree/tests/snapshots/javascript/arrowFunctions/error-missing-paren.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/arrowFunctions/error-missing-paren.src.js.shot
index 4d8588883161..0ac39c77fa9b 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/arrowFunctions/error-missing-paren.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/arrowFunctions/error-missing-paren.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript arrowFunctions error-missing-paren.src 1`] = `
-Object {
+TSError {
"column": 9,
"index": 9,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/arrowFunctions/error-not-arrow.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/arrowFunctions/error-not-arrow.src.js.shot
index 6e864113410b..ccca762cfacc 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/arrowFunctions/error-not-arrow.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/arrowFunctions/error-not-arrow.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript arrowFunctions error-not-arrow.src 1`] = `
-Object {
+TSError {
"column": 26,
"index": 26,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/arrowFunctions/error-numeric-param-multi.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/arrowFunctions/error-numeric-param-multi.src.js.shot
index a420234d969d..a6309f29f7a1 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/arrowFunctions/error-numeric-param-multi.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/arrowFunctions/error-numeric-param-multi.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript arrowFunctions error-numeric-param-multi.src 1`] = `
-Object {
+TSError {
"column": 9,
"index": 9,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/arrowFunctions/error-numeric-param.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/arrowFunctions/error-numeric-param.src.js.shot
index ce4227697aef..00a6318c84e4 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/arrowFunctions/error-numeric-param.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/arrowFunctions/error-numeric-param.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript arrowFunctions error-numeric-param.src 1`] = `
-Object {
+TSError {
"column": 5,
"index": 5,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/arrowFunctions/error-reverse-arrow.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/arrowFunctions/error-reverse-arrow.src.js.shot
index 6d661e7e9416..2b010cb8480d 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/arrowFunctions/error-reverse-arrow.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/arrowFunctions/error-reverse-arrow.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript arrowFunctions error-reverse-arrow.src 1`] = `
-Object {
+TSError {
"column": 1,
"index": 1,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/arrowFunctions/error-wrapped-param.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/arrowFunctions/error-wrapped-param.src.js.shot
index 49be12cab232..921faeae08b9 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/arrowFunctions/error-wrapped-param.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/arrowFunctions/error-wrapped-param.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript arrowFunctions error-wrapped-param.src 1`] = `
-Object {
+TSError {
"column": 6,
"index": 6,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/binaryLiterals/invalid.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/binaryLiterals/invalid.src.js.shot
index 061b8be20a61..a65dcc90f690 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/binaryLiterals/invalid.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/binaryLiterals/invalid.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript binaryLiterals invalid.src 1`] = `
-Object {
+TSError {
"column": 4,
"index": 4,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/classes/class-with-no-body.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/classes/class-with-no-body.src.js.shot
index da522f5fbd0a..b92aba616ebc 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/classes/class-with-no-body.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/classes/class-with-no-body.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript classes class-with-no-body.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 10,
"lineNumber": 2,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/classes/invalid-class-two-super-classes.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/classes/invalid-class-two-super-classes.src.js.shot
index 3931bfb0029f..71e4b3acbbb5 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/classes/invalid-class-two-super-classes.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/classes/invalid-class-two-super-classes.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript classes invalid-class-two-super-classes.src 1`] = `
-Object {
+TSError {
"column": 18,
"index": 18,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/experimentalDynamicImport/error-dynamic-import-params.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/experimentalDynamicImport/error-dynamic-import-params.src.js.shot
index 4409934d5bd6..6eab5338468b 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/experimentalDynamicImport/error-dynamic-import-params.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/experimentalDynamicImport/error-dynamic-import-params.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript experimentalDynamicImport error-dynamic-import-params.src 1`] = `
-Object {
+TSError {
"column": 7,
"index": 7,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/experimentalObjectRestSpread/invalid-rest.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/experimentalObjectRestSpread/invalid-rest.src.js.shot
index d0b41a2d431b..79ebf6dc533f 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/experimentalObjectRestSpread/invalid-rest.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/experimentalObjectRestSpread/invalid-rest.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript experimentalObjectRestSpread invalid-rest.src 1`] = `
-Object {
+TSError {
"column": 18,
"index": 18,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/forIn/for-in-object.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/forIn/for-in-object.src.js.shot
index a7fc7b9f8af0..f1d2b3dbc4a0 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/forIn/for-in-object.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/forIn/for-in-object.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript forIn for-in-object.src 1`] = `
-Object {
+TSError {
"column": 14,
"index": 14,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/hexLiterals/invalid.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/hexLiterals/invalid.src.js.shot
index d340dd7f1af2..1095e6d6c8e2 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/hexLiterals/invalid.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/hexLiterals/invalid.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript hexLiterals invalid.src 1`] = `
-Object {
+TSError {
"column": 4,
"index": 4,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-batch-missing-from-clause.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-batch-missing-from-clause.src.js.shot
index 140771b44066..ae346cd3c57f 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-batch-missing-from-clause.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-batch-missing-from-clause.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript modules invalid-export-batch-missing-from-clause.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 9,
"lineNumber": 2,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-batch-token.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-batch-token.src.js.shot
index 684e19e0233c..5a05ea68acb9 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-batch-token.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-batch-token.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript modules invalid-export-batch-token.src 1`] = `
-Object {
+TSError {
"column": 9,
"index": 9,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-default-equal.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-default-equal.src.js.shot
index 7a9ce96887f6..ee8455cff2e8 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-default-equal.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-default-equal.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript modules invalid-export-default-equal.src 1`] = `
-Object {
+TSError {
"column": 15,
"index": 15,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-default-token.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-default-token.src.js.shot
index 60a6d78b8a8c..68613dac12a5 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-default-token.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-default-token.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript modules invalid-export-default-token.src 1`] = `
-Object {
+TSError {
"column": 17,
"index": 17,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-default.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-default.src.js.shot
index 50249961d3af..aa02d1b56fc4 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-default.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-default.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript modules invalid-export-default.src 1`] = `
-Object {
+TSError {
"column": 20,
"index": 20,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-named-extra-comma.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-named-extra-comma.src.js.shot
index 6ecbf90fdcab..143a7bd54948 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-named-extra-comma.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-named-extra-comma.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript modules invalid-export-named-extra-comma.src 1`] = `
-Object {
+TSError {
"column": 16,
"index": 16,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-named-middle-comma.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-named-middle-comma.src.js.shot
index 41db50ebc78d..b4f8f3d9872d 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-named-middle-comma.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-export-named-middle-comma.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript modules invalid-export-named-middle-comma.src 1`] = `
-Object {
+TSError {
"column": 12,
"index": 12,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-default-after-named-after-default.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-default-after-named-after-default.src.js.shot
index 7607179ac6ee..fdb5bd5d6bd2 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-default-after-named-after-default.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-default-after-named-after-default.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript modules invalid-import-default-after-named-after-default.src 1`] = `
-Object {
+TSError {
"column": 17,
"index": 17,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-default-after-named.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-default-after-named.src.js.shot
index fdb8cb274d5d..756a15c8851f 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-default-after-named.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-default-after-named.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript modules invalid-import-default-after-named.src 1`] = `
-Object {
+TSError {
"column": 12,
"index": 12,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-default-missing-module-specifier.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-default-missing-module-specifier.src.js.shot
index 4dd22655d116..95e60f66c12d 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-default-missing-module-specifier.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-default-missing-module-specifier.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript modules invalid-import-default-missing-module-specifier.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 11,
"lineNumber": 2,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-default.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-default.src.js.shot
index 072020a6f46b..a15834eebdca 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-default.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-default.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript modules invalid-import-default.src 1`] = `
-Object {
+TSError {
"column": 7,
"index": 7,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-missing-module-specifier.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-missing-module-specifier.src.js.shot
index eed69ef23a0c..adeb29427a96 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-missing-module-specifier.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-missing-module-specifier.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript modules invalid-import-missing-module-specifier.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 20,
"lineNumber": 2,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-named-after-named.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-named-after-named.src.js.shot
index 39758891aa47..2205d06adcb6 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-named-after-named.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-named-after-named.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript modules invalid-import-named-after-named.src 1`] = `
-Object {
+TSError {
"column": 12,
"index": 12,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-named-after-namespace.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-named-after-namespace.src.js.shot
index 91a74529b99c..a6adaddba9ee 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-named-after-namespace.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-named-after-namespace.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript modules invalid-import-named-after-namespace.src 1`] = `
-Object {
+TSError {
"column": 15,
"index": 15,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-named-as-missing-from.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-named-as-missing-from.src.js.shot
index e725b5a845c3..e49ff4b519d5 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-named-as-missing-from.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-named-as-missing-from.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript modules invalid-import-named-as-missing-from.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 24,
"lineNumber": 2,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-named-extra-comma.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-named-extra-comma.src.js.shot
index 7b6f49a80d52..602373b73e68 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-named-extra-comma.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-named-extra-comma.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript modules invalid-import-named-extra-comma.src 1`] = `
-Object {
+TSError {
"column": 16,
"index": 16,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-named-middle-comma.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-named-middle-comma.src.js.shot
index 9ae813ee7061..cac59c052809 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-named-middle-comma.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-named-middle-comma.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript modules invalid-import-named-middle-comma.src 1`] = `
-Object {
+TSError {
"column": 12,
"index": 12,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-namespace-after-named.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-namespace-after-named.src.js.shot
index c77b5326270f..b5b5e09f82b1 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-namespace-after-named.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-namespace-after-named.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript modules invalid-import-namespace-after-named.src 1`] = `
-Object {
+TSError {
"column": 12,
"index": 12,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-namespace-missing-as.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-namespace-missing-as.src.js.shot
index 5d846e434301..ccd1659afe4e 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-namespace-missing-as.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/modules/invalid-import-namespace-missing-as.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript modules invalid-import-namespace-missing-as.src 1`] = `
-Object {
+TSError {
"column": 9,
"index": 9,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/objectLiteralComputedProperties/invalid-computed-variable-property.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/objectLiteralComputedProperties/invalid-computed-variable-property.src.js.shot
index eba3235d029a..b70c46baf0ae 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/objectLiteralComputedProperties/invalid-computed-variable-property.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/objectLiteralComputedProperties/invalid-computed-variable-property.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript objectLiteralComputedProperties invalid-computed-variable-property.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 20,
"lineNumber": 3,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/objectLiteralComputedProperties/invalid-standalone-computed-variable-property.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/objectLiteralComputedProperties/invalid-standalone-computed-variable-property.src.js.shot
index 3ad37e27ab31..3431838086bf 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/objectLiteralComputedProperties/invalid-standalone-computed-variable-property.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/objectLiteralComputedProperties/invalid-standalone-computed-variable-property.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript objectLiteralComputedProperties invalid-standalone-computed-variable-property.src 1`] = `
-Object {
+TSError {
"column": 5,
"index": 5,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/objectLiteralShorthandMethods/invalid-method-no-braces.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/objectLiteralShorthandMethods/invalid-method-no-braces.src.js.shot
index 80376a615c6a..14d3993f83b0 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/objectLiteralShorthandMethods/invalid-method-no-braces.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/objectLiteralShorthandMethods/invalid-method-no-braces.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript objectLiteralShorthandMethods invalid-method-no-braces.src 1`] = `
-Object {
+TSError {
"column": 13,
"index": 19,
"lineNumber": 2,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/octalLiterals/invalid.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/octalLiterals/invalid.src.js.shot
index 849f063d5db9..40818b0aef69 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/octalLiterals/invalid.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/octalLiterals/invalid.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript octalLiterals invalid.src 1`] = `
-Object {
+TSError {
"column": 4,
"index": 4,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/spread/error-invalid-if.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/spread/error-invalid-if.src.js.shot
index 705c64e01793..f80801010e12 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/spread/error-invalid-if.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/spread/error-invalid-if.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript spread error-invalid-if.src 1`] = `
-Object {
+TSError {
"column": 6,
"index": 6,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/spread/error-invalid-sequence.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/spread/error-invalid-sequence.src.js.shot
index 4ee0121d3c74..2606eea3403a 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/spread/error-invalid-sequence.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/spread/error-invalid-sequence.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript spread error-invalid-sequence.src 1`] = `
-Object {
+TSError {
"column": 4,
"index": 4,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/unicodeCodePointEscapes/invalid-empty-escape.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/unicodeCodePointEscapes/invalid-empty-escape.src.js.shot
index 4a663bbe3a8d..7d4d1d1a6bde 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/unicodeCodePointEscapes/invalid-empty-escape.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/unicodeCodePointEscapes/invalid-empty-escape.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript unicodeCodePointEscapes invalid-empty-escape.src 1`] = `
-Object {
+TSError {
"column": 4,
"index": 4,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/javascript/unicodeCodePointEscapes/invalid-too-large-escape.src.js.shot b/packages/typescript-estree/tests/snapshots/javascript/unicodeCodePointEscapes/invalid-too-large-escape.src.js.shot
index cb7085a9d65b..b5e8902e41da 100644
--- a/packages/typescript-estree/tests/snapshots/javascript/unicodeCodePointEscapes/invalid-too-large-escape.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/javascript/unicodeCodePointEscapes/invalid-too-large-escape.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`javascript unicodeCodePointEscapes invalid-too-large-escape.src 1`] = `
-Object {
+TSError {
"column": 10,
"index": 10,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/embedded-tags.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/embedded-tags.src.js.shot
index 95a7931627ba..d778d382e997 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/embedded-tags.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/embedded-tags.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx embedded-tags.src 1`] = `
-Object {
+TSError {
"column": 16,
"index": 16,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/invalid-attribute-missing-equals.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/invalid-attribute-missing-equals.src.js.shot
index bcca853e1250..312d414ac20d 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/invalid-attribute-missing-equals.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/invalid-attribute-missing-equals.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx invalid-attribute-missing-equals.src 1`] = `
-Object {
+TSError {
"column": 14,
"index": 14,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/invalid-attribute.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/invalid-attribute.src.js.shot
index cd30dc7093f5..b0eaf47f8e9e 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/invalid-attribute.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/invalid-attribute.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx invalid-attribute.src 1`] = `
-Object {
+TSError {
"column": 5,
"index": 5,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/invalid-broken-tag.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/invalid-broken-tag.src.js.shot
index 8e62b046d279..f04a71430590 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/invalid-broken-tag.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/invalid-broken-tag.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx invalid-broken-tag.src 1`] = `
-Object {
+TSError {
"column": 12,
"index": 12,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/invalid-computed-end-tag-name.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/invalid-computed-end-tag-name.src.js.shot
index 0f377ef358c5..4e6aab214780 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/invalid-computed-end-tag-name.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/invalid-computed-end-tag-name.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx invalid-computed-end-tag-name.src 1`] = `
-Object {
+TSError {
"column": 2,
"index": 2,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/invalid-computed-string-end-tag-name.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/invalid-computed-string-end-tag-name.src.js.shot
index 7a5ac6909c88..d6ebfad1a333 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/invalid-computed-string-end-tag-name.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/invalid-computed-string-end-tag-name.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx invalid-computed-string-end-tag-name.src 1`] = `
-Object {
+TSError {
"column": 2,
"index": 2,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/invalid-embedded-expression.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/invalid-embedded-expression.src.js.shot
index c8c137461dbd..b100da149e8b 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/invalid-embedded-expression.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/invalid-embedded-expression.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx invalid-embedded-expression.src 1`] = `
-Object {
+TSError {
"column": 9,
"index": 9,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/invalid-leading-dot-tag-name.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/invalid-leading-dot-tag-name.src.js.shot
index 7a898add8cb6..57a4e46ab9dc 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/invalid-leading-dot-tag-name.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/invalid-leading-dot-tag-name.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx invalid-leading-dot-tag-name.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 0,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/invalid-matching-placeholder-in-closing-tag.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/invalid-matching-placeholder-in-closing-tag.src.js.shot
index fe40f0361216..0109dd78aee8 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/invalid-matching-placeholder-in-closing-tag.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/invalid-matching-placeholder-in-closing-tag.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx invalid-matching-placeholder-in-closing-tag.src 1`] = `
-Object {
+TSError {
"column": 27,
"index": 27,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/invalid-mismatched-closing-tag.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/invalid-mismatched-closing-tag.src.js.shot
index bab969b949a6..a35f3afd7151 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/invalid-mismatched-closing-tag.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/invalid-mismatched-closing-tag.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx invalid-mismatched-closing-tag.src 1`] = `
-Object {
+TSError {
"column": 3,
"index": 3,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/invalid-mismatched-closing-tags.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/invalid-mismatched-closing-tags.src.js.shot
index 48a5da759091..911494689a40 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/invalid-mismatched-closing-tags.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/invalid-mismatched-closing-tags.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx invalid-mismatched-closing-tags.src 1`] = `
-Object {
+TSError {
"column": 1,
"index": 1,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/invalid-mismatched-dot-tag-name.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/invalid-mismatched-dot-tag-name.src.js.shot
index df751d1740dc..77d7e4187c3b 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/invalid-mismatched-dot-tag-name.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/invalid-mismatched-dot-tag-name.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx invalid-mismatched-dot-tag-name.src 1`] = `
-Object {
+TSError {
"column": 7,
"index": 7,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/invalid-mismatched-namespace-tag.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/invalid-mismatched-namespace-tag.src.js.shot
index 11aa190352b1..1dd65c521056 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/invalid-mismatched-namespace-tag.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/invalid-mismatched-namespace-tag.src.js.shot
@@ -1,10 +1,10 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx invalid-mismatched-namespace-tag.src 1`] = `
-Object {
- "column": 2,
- "index": 2,
+TSError {
+ "column": 5,
+ "index": 5,
"lineNumber": 1,
- "message": "Identifier expected.",
+ "message": "Expected corresponding JSX closing tag for 'a:b'.",
}
`;
diff --git a/packages/typescript-estree/tests/snapshots/jsx/invalid-missing-closing-tag-attribute-placeholder.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/invalid-missing-closing-tag-attribute-placeholder.src.js.shot
index 2d6c87006666..80d75f36ba2e 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/invalid-missing-closing-tag-attribute-placeholder.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/invalid-missing-closing-tag-attribute-placeholder.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx invalid-missing-closing-tag-attribute-placeholder.src 1`] = `
-Object {
+TSError {
"column": 1,
"index": 1,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/invalid-missing-closing-tag.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/invalid-missing-closing-tag.src.js.shot
index a1e249095988..56f8c0d6ae30 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/invalid-missing-closing-tag.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/invalid-missing-closing-tag.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx invalid-missing-closing-tag.src 1`] = `
-Object {
+TSError {
"column": 1,
"index": 1,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/invalid-missing-namespace-name.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/invalid-missing-namespace-name.src.js.shot
index 539d6637c079..c208b579c837 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/invalid-missing-namespace-name.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/invalid-missing-namespace-name.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx invalid-missing-namespace-name.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 0,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/invalid-missing-namespace-value.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/invalid-missing-namespace-value.src.js.shot
index d90c23b13602..d76a079d93ea 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/invalid-missing-namespace-value.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/invalid-missing-namespace-value.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx invalid-missing-namespace-value.src 1`] = `
-Object {
+TSError {
"column": 2,
"index": 2,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/invalid-missing-spread-operator.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/invalid-missing-spread-operator.src.js.shot
index daec8f23ef24..ac0a591ee4fe 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/invalid-missing-spread-operator.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/invalid-missing-spread-operator.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx invalid-missing-spread-operator.src 1`] = `
-Object {
+TSError {
"column": 6,
"index": 6,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/invalid-namespace-name-with-docts.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/invalid-namespace-name-with-docts.src.js.shot
index 8d3d4b531193..31752fe92610 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/invalid-namespace-name-with-docts.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/invalid-namespace-name-with-docts.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx invalid-namespace-name-with-docts.src 1`] = `
-Object {
+TSError {
"column": 4,
"index": 4,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/invalid-namespace-value-with-dots.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/invalid-namespace-value-with-dots.src.js.shot
index 632d941125a6..3d11bc184cc8 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/invalid-namespace-value-with-dots.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/invalid-namespace-value-with-dots.src.js.shot
@@ -2,9 +2,490 @@
exports[`jsx invalid-namespace-value-with-dots.src 1`] = `
Object {
- "column": 2,
- "index": 2,
- "lineNumber": 1,
- "message": "Identifier expected.",
+ "body": Array [
+ Object {
+ "expression": Object {
+ "children": Array [],
+ "closingElement": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 15,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 7,
+ "line": 1,
+ },
+ },
+ "name": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 14,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 9,
+ "line": 1,
+ },
+ },
+ "object": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 12,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 9,
+ "line": 1,
+ },
+ },
+ "name": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 12,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 11,
+ "line": 1,
+ },
+ },
+ "name": "b",
+ "range": Array [
+ 11,
+ 12,
+ ],
+ "type": "JSXIdentifier",
+ },
+ "namespace": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 10,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 9,
+ "line": 1,
+ },
+ },
+ "name": "a",
+ "range": Array [
+ 9,
+ 10,
+ ],
+ "type": "JSXIdentifier",
+ },
+ "range": Array [
+ 9,
+ 12,
+ ],
+ "type": "JSXNamespacedName",
+ },
+ "property": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 14,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 13,
+ "line": 1,
+ },
+ },
+ "name": "c",
+ "range": Array [
+ 13,
+ 14,
+ ],
+ "type": "JSXIdentifier",
+ },
+ "range": Array [
+ 9,
+ 14,
+ ],
+ "type": "JSXMemberExpression",
+ },
+ "range": Array [
+ 7,
+ 15,
+ ],
+ "type": "JSXClosingElement",
+ },
+ "loc": Object {
+ "end": Object {
+ "column": 15,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "openingElement": Object {
+ "attributes": Array [],
+ "loc": Object {
+ "end": Object {
+ "column": 7,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "name": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 6,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 1,
+ "line": 1,
+ },
+ },
+ "object": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 4,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 1,
+ "line": 1,
+ },
+ },
+ "name": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 4,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 3,
+ "line": 1,
+ },
+ },
+ "name": "b",
+ "range": Array [
+ 3,
+ 4,
+ ],
+ "type": "JSXIdentifier",
+ },
+ "namespace": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 2,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 1,
+ "line": 1,
+ },
+ },
+ "name": "a",
+ "range": Array [
+ 1,
+ 2,
+ ],
+ "type": "JSXIdentifier",
+ },
+ "range": Array [
+ 1,
+ 4,
+ ],
+ "type": "JSXNamespacedName",
+ },
+ "property": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 6,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 5,
+ "line": 1,
+ },
+ },
+ "name": "c",
+ "range": Array [
+ 5,
+ 6,
+ ],
+ "type": "JSXIdentifier",
+ },
+ "range": Array [
+ 1,
+ 6,
+ ],
+ "type": "JSXMemberExpression",
+ },
+ "range": Array [
+ 0,
+ 7,
+ ],
+ "selfClosing": false,
+ "type": "JSXOpeningElement",
+ "typeParameters": undefined,
+ },
+ "range": Array [
+ 0,
+ 15,
+ ],
+ "type": "JSXElement",
+ },
+ "loc": Object {
+ "end": Object {
+ "column": 16,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 0,
+ 16,
+ ],
+ "type": "ExpressionStatement",
+ },
+ ],
+ "comments": Array [],
+ "loc": Object {
+ "end": Object {
+ "column": 16,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 0,
+ 16,
+ ],
+ "sourceType": "script",
+ "tokens": Array [
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 1,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 0,
+ 1,
+ ],
+ "type": "Punctuator",
+ "value": "<",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 4,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 1,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 1,
+ 4,
+ ],
+ "type": "JSXIdentifier",
+ "value": "a:b",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 5,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 4,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 4,
+ 5,
+ ],
+ "type": "Punctuator",
+ "value": ".",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 6,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 5,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 5,
+ 6,
+ ],
+ "type": "JSXIdentifier",
+ "value": "c",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 7,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 6,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 6,
+ 7,
+ ],
+ "type": "Punctuator",
+ "value": ">",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 8,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 7,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 7,
+ 8,
+ ],
+ "type": "Punctuator",
+ "value": "<",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 9,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 8,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 8,
+ 9,
+ ],
+ "type": "Punctuator",
+ "value": "/",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 12,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 9,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 9,
+ 12,
+ ],
+ "type": "JSXIdentifier",
+ "value": "a:b",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 13,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 12,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 12,
+ 13,
+ ],
+ "type": "Punctuator",
+ "value": ".",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 14,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 13,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 13,
+ 14,
+ ],
+ "type": "JSXIdentifier",
+ "value": "c",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 15,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 14,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 14,
+ 15,
+ ],
+ "type": "Punctuator",
+ "value": ">",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 16,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 15,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 15,
+ 16,
+ ],
+ "type": "Punctuator",
+ "value": ";",
+ },
+ ],
+ "type": "Program",
}
`;
diff --git a/packages/typescript-estree/tests/snapshots/jsx/invalid-no-common-parent-with-comment.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/invalid-no-common-parent-with-comment.src.js.shot
index 74546236bad9..70dbe413502c 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/invalid-no-common-parent-with-comment.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/invalid-no-common-parent-with-comment.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx invalid-no-common-parent-with-comment.src 1`] = `
-Object {
+TSError {
"column": 8,
"index": 8,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/invalid-no-common-parent.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/invalid-no-common-parent.src.js.shot
index 7490422a4b5f..459f48170205 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/invalid-no-common-parent.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/invalid-no-common-parent.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx invalid-no-common-parent.src 1`] = `
-Object {
+TSError {
"column": 8,
"index": 8,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/invalid-no-tag-name.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/invalid-no-tag-name.src.js.shot
index b63c1ccfe3c3..7468255ed504 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/invalid-no-tag-name.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/invalid-no-tag-name.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx invalid-no-tag-name.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 0,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/invalid-placeholder-in-closing-tag.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/invalid-placeholder-in-closing-tag.src.js.shot
index 2e857296666d..68d4a0fe19d7 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/invalid-placeholder-in-closing-tag.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/invalid-placeholder-in-closing-tag.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx invalid-placeholder-in-closing-tag.src 1`] = `
-Object {
+TSError {
"column": 16,
"index": 16,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/invalid-shorthand-fragment-no-closing.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/invalid-shorthand-fragment-no-closing.src.js.shot
index 48602742927e..decbdbd3dc16 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/invalid-shorthand-fragment-no-closing.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/invalid-shorthand-fragment-no-closing.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx invalid-shorthand-fragment-no-closing.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 0,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/invalid-trailing-dot-tag-name.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/invalid-trailing-dot-tag-name.src.js.shot
index 0d642dc05548..9043d6e41959 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/invalid-trailing-dot-tag-name.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/invalid-trailing-dot-tag-name.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx invalid-trailing-dot-tag-name.src 1`] = `
-Object {
+TSError {
"column": 3,
"index": 3,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/invalid-unexpected-comma.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/invalid-unexpected-comma.src.js.shot
index 9e8f2aadcc65..6f8f5c8668eb 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/invalid-unexpected-comma.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/invalid-unexpected-comma.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx invalid-unexpected-comma.src 1`] = `
-Object {
+TSError {
"column": 19,
"index": 19,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/member-expression-private.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/member-expression-private.src.js.shot
index be5a6d6f54d4..c6d458d493ef 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/member-expression-private.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/member-expression-private.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx member-expression-private.src 1`] = `
-Object {
+TSError {
"column": 10,
"index": 10,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/namespace-this-name.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/namespace-this-name.src.js.shot
new file mode 100644
index 000000000000..58e66b804b7e
--- /dev/null
+++ b/packages/typescript-estree/tests/snapshots/jsx/namespace-this-name.src.js.shot
@@ -0,0 +1,226 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`jsx namespace-this-name.src 1`] = `
+Object {
+ "body": Array [
+ Object {
+ "expression": Object {
+ "children": Array [],
+ "closingElement": null,
+ "loc": Object {
+ "end": Object {
+ "column": 12,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "openingElement": Object {
+ "attributes": Array [],
+ "loc": Object {
+ "end": Object {
+ "column": 12,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "name": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 9,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 1,
+ "line": 1,
+ },
+ },
+ "name": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 9,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 6,
+ "line": 1,
+ },
+ },
+ "name": "bar",
+ "range": Array [
+ 6,
+ 9,
+ ],
+ "type": "JSXIdentifier",
+ },
+ "namespace": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 5,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 1,
+ "line": 1,
+ },
+ },
+ "name": "this",
+ "range": Array [
+ 1,
+ 5,
+ ],
+ "type": "JSXIdentifier",
+ },
+ "range": Array [
+ 1,
+ 9,
+ ],
+ "type": "JSXNamespacedName",
+ },
+ "range": Array [
+ 0,
+ 12,
+ ],
+ "selfClosing": true,
+ "type": "JSXOpeningElement",
+ "typeParameters": undefined,
+ },
+ "range": Array [
+ 0,
+ 12,
+ ],
+ "type": "JSXElement",
+ },
+ "loc": Object {
+ "end": Object {
+ "column": 13,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 0,
+ 13,
+ ],
+ "type": "ExpressionStatement",
+ },
+ ],
+ "comments": Array [],
+ "loc": Object {
+ "end": Object {
+ "column": 0,
+ "line": 2,
+ },
+ "start": Object {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 0,
+ 14,
+ ],
+ "sourceType": "script",
+ "tokens": Array [
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 1,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 0,
+ 1,
+ ],
+ "type": "Punctuator",
+ "value": "<",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 9,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 1,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 1,
+ 9,
+ ],
+ "type": "Keyword",
+ "value": "this:bar",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 11,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 10,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 10,
+ 11,
+ ],
+ "type": "Punctuator",
+ "value": "/",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 12,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 11,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 11,
+ 12,
+ ],
+ "type": "Punctuator",
+ "value": ">",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 13,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 12,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 12,
+ 13,
+ ],
+ "type": "Punctuator",
+ "value": ";",
+ },
+ ],
+ "type": "Program",
+}
+`;
diff --git a/packages/typescript-estree/tests/snapshots/jsx/namespaced-attribute-and-value-inserted.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/namespaced-attribute-and-value-inserted.src.js.shot
index eea2ab649582..647aa3f85b5e 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/namespaced-attribute-and-value-inserted.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/namespaced-attribute-and-value-inserted.src.js.shot
@@ -2,9 +2,933 @@
exports[`jsx namespaced-attribute-and-value-inserted.src 1`] = `
Object {
- "column": 4,
- "index": 4,
- "lineNumber": 1,
- "message": "Identifier expected.",
+ "body": Array [
+ Object {
+ "expression": Object {
+ "children": Array [
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 16,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 15,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 15,
+ 16,
+ ],
+ "raw": " ",
+ "type": "Literal",
+ "value": " ",
+ },
+ Object {
+ "expression": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 22,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 17,
+ "line": 1,
+ },
+ },
+ "name": "value",
+ "range": Array [
+ 17,
+ 22,
+ ],
+ "type": "Identifier",
+ },
+ "loc": Object {
+ "end": Object {
+ "column": 23,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 16,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 16,
+ 23,
+ ],
+ "type": "JSXExpressionContainer",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 24,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 23,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 23,
+ 24,
+ ],
+ "raw": " ",
+ "type": "Literal",
+ "value": " ",
+ },
+ Object {
+ "children": Array [
+ Object {
+ "children": Array [],
+ "closingElement": null,
+ "loc": Object {
+ "end": Object {
+ "column": 32,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 27,
+ "line": 1,
+ },
+ },
+ "openingElement": Object {
+ "attributes": Array [],
+ "loc": Object {
+ "end": Object {
+ "column": 32,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 27,
+ "line": 1,
+ },
+ },
+ "name": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 29,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 28,
+ "line": 1,
+ },
+ },
+ "name": "c",
+ "range": Array [
+ 28,
+ 29,
+ ],
+ "type": "JSXIdentifier",
+ },
+ "range": Array [
+ 27,
+ 32,
+ ],
+ "selfClosing": true,
+ "type": "JSXOpeningElement",
+ "typeParameters": undefined,
+ },
+ "range": Array [
+ 27,
+ 32,
+ ],
+ "type": "JSXElement",
+ },
+ ],
+ "closingElement": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 36,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 32,
+ "line": 1,
+ },
+ },
+ "name": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 35,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 34,
+ "line": 1,
+ },
+ },
+ "name": "b",
+ "range": Array [
+ 34,
+ 35,
+ ],
+ "type": "JSXIdentifier",
+ },
+ "range": Array [
+ 32,
+ 36,
+ ],
+ "type": "JSXClosingElement",
+ },
+ "loc": Object {
+ "end": Object {
+ "column": 36,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 24,
+ "line": 1,
+ },
+ },
+ "openingElement": Object {
+ "attributes": Array [],
+ "loc": Object {
+ "end": Object {
+ "column": 27,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 24,
+ "line": 1,
+ },
+ },
+ "name": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 26,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 25,
+ "line": 1,
+ },
+ },
+ "name": "b",
+ "range": Array [
+ 25,
+ 26,
+ ],
+ "type": "JSXIdentifier",
+ },
+ "range": Array [
+ 24,
+ 27,
+ ],
+ "selfClosing": false,
+ "type": "JSXOpeningElement",
+ "typeParameters": undefined,
+ },
+ "range": Array [
+ 24,
+ 36,
+ ],
+ "type": "JSXElement",
+ },
+ ],
+ "closingElement": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 40,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 36,
+ "line": 1,
+ },
+ },
+ "name": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 39,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 38,
+ "line": 1,
+ },
+ },
+ "name": "a",
+ "range": Array [
+ 38,
+ 39,
+ ],
+ "type": "JSXIdentifier",
+ },
+ "range": Array [
+ 36,
+ 40,
+ ],
+ "type": "JSXClosingElement",
+ },
+ "loc": Object {
+ "end": Object {
+ "column": 40,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "openingElement": Object {
+ "attributes": Array [
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 14,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 3,
+ "line": 1,
+ },
+ },
+ "name": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 8,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 3,
+ "line": 1,
+ },
+ },
+ "name": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 8,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 5,
+ "line": 1,
+ },
+ },
+ "name": "foo",
+ "range": Array [
+ 5,
+ 8,
+ ],
+ "type": "JSXIdentifier",
+ },
+ "namespace": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 4,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 3,
+ "line": 1,
+ },
+ },
+ "name": "n",
+ "range": Array [
+ 3,
+ 4,
+ ],
+ "type": "JSXIdentifier",
+ },
+ "range": Array [
+ 3,
+ 8,
+ ],
+ "type": "JSXNamespacedName",
+ },
+ "range": Array [
+ 3,
+ 14,
+ ],
+ "type": "JSXAttribute",
+ "value": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 14,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 9,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 9,
+ 14,
+ ],
+ "raw": "\\"bar\\"",
+ "type": "Literal",
+ "value": "bar",
+ },
+ },
+ ],
+ "loc": Object {
+ "end": Object {
+ "column": 15,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "name": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 2,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 1,
+ "line": 1,
+ },
+ },
+ "name": "a",
+ "range": Array [
+ 1,
+ 2,
+ ],
+ "type": "JSXIdentifier",
+ },
+ "range": Array [
+ 0,
+ 15,
+ ],
+ "selfClosing": false,
+ "type": "JSXOpeningElement",
+ "typeParameters": undefined,
+ },
+ "range": Array [
+ 0,
+ 40,
+ ],
+ "type": "JSXElement",
+ },
+ "loc": Object {
+ "end": Object {
+ "column": 41,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 0,
+ 41,
+ ],
+ "type": "ExpressionStatement",
+ },
+ ],
+ "comments": Array [],
+ "loc": Object {
+ "end": Object {
+ "column": 41,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 0,
+ 41,
+ ],
+ "sourceType": "script",
+ "tokens": Array [
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 1,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 0,
+ 1,
+ ],
+ "type": "Punctuator",
+ "value": "<",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 2,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 1,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 1,
+ 2,
+ ],
+ "type": "JSXIdentifier",
+ "value": "a",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 8,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 3,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 3,
+ 8,
+ ],
+ "type": "JSXIdentifier",
+ "value": "n:foo",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 9,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 8,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 8,
+ 9,
+ ],
+ "type": "Punctuator",
+ "value": "=",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 14,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 9,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 9,
+ 14,
+ ],
+ "type": "JSXText",
+ "value": "\\"bar\\"",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 15,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 14,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 14,
+ 15,
+ ],
+ "type": "Punctuator",
+ "value": ">",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 16,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 15,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 15,
+ 16,
+ ],
+ "type": "JSXText",
+ "value": " ",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 17,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 16,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 16,
+ 17,
+ ],
+ "type": "Punctuator",
+ "value": "{",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 22,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 17,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 17,
+ 22,
+ ],
+ "type": "Identifier",
+ "value": "value",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 23,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 22,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 22,
+ 23,
+ ],
+ "type": "Punctuator",
+ "value": "}",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 24,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 23,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 23,
+ 24,
+ ],
+ "type": "JSXText",
+ "value": " ",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 25,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 24,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 24,
+ 25,
+ ],
+ "type": "Punctuator",
+ "value": "<",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 26,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 25,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 25,
+ 26,
+ ],
+ "type": "JSXIdentifier",
+ "value": "b",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 27,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 26,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 26,
+ 27,
+ ],
+ "type": "Punctuator",
+ "value": ">",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 28,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 27,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 27,
+ 28,
+ ],
+ "type": "Punctuator",
+ "value": "<",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 29,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 28,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 28,
+ 29,
+ ],
+ "type": "JSXIdentifier",
+ "value": "c",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 31,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 30,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 30,
+ 31,
+ ],
+ "type": "Punctuator",
+ "value": "/",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 32,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 31,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 31,
+ 32,
+ ],
+ "type": "Punctuator",
+ "value": ">",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 33,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 32,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 32,
+ 33,
+ ],
+ "type": "Punctuator",
+ "value": "<",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 34,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 33,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 33,
+ 34,
+ ],
+ "type": "Punctuator",
+ "value": "/",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 35,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 34,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 34,
+ 35,
+ ],
+ "type": "JSXIdentifier",
+ "value": "b",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 36,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 35,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 35,
+ 36,
+ ],
+ "type": "Punctuator",
+ "value": ">",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 37,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 36,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 36,
+ 37,
+ ],
+ "type": "Punctuator",
+ "value": "<",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 38,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 37,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 37,
+ 38,
+ ],
+ "type": "Punctuator",
+ "value": "/",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 39,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 38,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 38,
+ 39,
+ ],
+ "type": "JSXIdentifier",
+ "value": "a",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 40,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 39,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 39,
+ 40,
+ ],
+ "type": "Punctuator",
+ "value": ">",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 41,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 40,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 40,
+ 41,
+ ],
+ "type": "Punctuator",
+ "value": ";",
+ },
+ ],
+ "type": "Program",
}
`;
diff --git a/packages/typescript-estree/tests/snapshots/jsx/namespaced-name-and-attribute.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/namespaced-name-and-attribute.src.js.shot
index 5082dcbe1dde..b27c937e5a0a 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/namespaced-name-and-attribute.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/namespaced-name-and-attribute.src.js.shot
@@ -2,9 +2,315 @@
exports[`jsx namespaced-name-and-attribute.src 1`] = `
Object {
- "column": 2,
- "index": 2,
- "lineNumber": 1,
- "message": "Identifier expected.",
+ "body": Array [
+ Object {
+ "expression": Object {
+ "children": Array [],
+ "closingElement": null,
+ "loc": Object {
+ "end": Object {
+ "column": 11,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "openingElement": Object {
+ "attributes": Array [
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 8,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 5,
+ "line": 1,
+ },
+ },
+ "name": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 8,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 5,
+ "line": 1,
+ },
+ },
+ "name": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 8,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 7,
+ "line": 1,
+ },
+ },
+ "name": "v",
+ "range": Array [
+ 7,
+ 8,
+ ],
+ "type": "JSXIdentifier",
+ },
+ "namespace": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 6,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 5,
+ "line": 1,
+ },
+ },
+ "name": "n",
+ "range": Array [
+ 5,
+ 6,
+ ],
+ "type": "JSXIdentifier",
+ },
+ "range": Array [
+ 5,
+ 8,
+ ],
+ "type": "JSXNamespacedName",
+ },
+ "range": Array [
+ 5,
+ 8,
+ ],
+ "type": "JSXAttribute",
+ "value": null,
+ },
+ ],
+ "loc": Object {
+ "end": Object {
+ "column": 11,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "name": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 4,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 1,
+ "line": 1,
+ },
+ },
+ "name": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 4,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 3,
+ "line": 1,
+ },
+ },
+ "name": "a",
+ "range": Array [
+ 3,
+ 4,
+ ],
+ "type": "JSXIdentifier",
+ },
+ "namespace": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 2,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 1,
+ "line": 1,
+ },
+ },
+ "name": "n",
+ "range": Array [
+ 1,
+ 2,
+ ],
+ "type": "JSXIdentifier",
+ },
+ "range": Array [
+ 1,
+ 4,
+ ],
+ "type": "JSXNamespacedName",
+ },
+ "range": Array [
+ 0,
+ 11,
+ ],
+ "selfClosing": true,
+ "type": "JSXOpeningElement",
+ "typeParameters": undefined,
+ },
+ "range": Array [
+ 0,
+ 11,
+ ],
+ "type": "JSXElement",
+ },
+ "loc": Object {
+ "end": Object {
+ "column": 12,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 0,
+ 12,
+ ],
+ "type": "ExpressionStatement",
+ },
+ ],
+ "comments": Array [],
+ "loc": Object {
+ "end": Object {
+ "column": 12,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 0,
+ 12,
+ ],
+ "sourceType": "script",
+ "tokens": Array [
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 1,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 0,
+ 1,
+ ],
+ "type": "Punctuator",
+ "value": "<",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 4,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 1,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 1,
+ 4,
+ ],
+ "type": "JSXIdentifier",
+ "value": "n:a",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 8,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 5,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 5,
+ 8,
+ ],
+ "type": "JSXIdentifier",
+ "value": "n:v",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 10,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 9,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 9,
+ 10,
+ ],
+ "type": "Punctuator",
+ "value": "/",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 11,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 10,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 10,
+ 11,
+ ],
+ "type": "Punctuator",
+ "value": ">",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 12,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 11,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 11,
+ 12,
+ ],
+ "type": "Punctuator",
+ "value": ";",
+ },
+ ],
+ "type": "Program",
}
`;
diff --git a/packages/typescript-estree/tests/snapshots/jsx/newslines-and-entities.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/newslines-and-entities.src.js.shot
index 2690d120c1c5..598f29385b2d 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/newslines-and-entities.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/newslines-and-entities.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx newslines-and-entities.src 1`] = `
-Object {
+TSError {
"column": 8,
"index": 8,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/jsx/self-closing-tag-with-newline.src.js.shot b/packages/typescript-estree/tests/snapshots/jsx/self-closing-tag-with-newline.src.js.shot
index 51247306bf31..9de3d885b9d5 100644
--- a/packages/typescript-estree/tests/snapshots/jsx/self-closing-tag-with-newline.src.js.shot
+++ b/packages/typescript-estree/tests/snapshots/jsx/self-closing-tag-with-newline.src.js.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jsx self-closing-tag-with-newline.src 1`] = `
-Object {
+TSError {
"column": 2,
"index": 2,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/tsx/generic-jsx-member-expression-private.src.tsx.shot b/packages/typescript-estree/tests/snapshots/tsx/generic-jsx-member-expression-private.src.tsx.shot
index 71fd0f423147..5d5d2c98492f 100644
--- a/packages/typescript-estree/tests/snapshots/tsx/generic-jsx-member-expression-private.src.tsx.shot
+++ b/packages/typescript-estree/tests/snapshots/tsx/generic-jsx-member-expression-private.src.tsx.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`tsx generic-jsx-member-expression-private.src 1`] = `
-Object {
+TSError {
"column": 22,
"index": 22,
"lineNumber": 1,
diff --git a/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-mixin.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-mixin.src.ts.shot
index 2483ab6e80a3..7ea53067001e 100644
--- a/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-mixin.src.ts.shot
+++ b/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-mixin.src.ts.shot
@@ -655,6 +655,7 @@ Object {
],
"type": "TSTypeAliasDeclaration",
"typeAnnotation": Object {
+ "abstract": false,
"loc": Object {
"end": Object {
"column": 47,
diff --git a/packages/typescript-estree/tests/snapshots/typescript/errorRecovery/interface-with-no-body.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/errorRecovery/interface-with-no-body.src.ts.shot
index 326171a51717..cd817aad0dc9 100644
--- a/packages/typescript-estree/tests/snapshots/typescript/errorRecovery/interface-with-no-body.src.ts.shot
+++ b/packages/typescript-estree/tests/snapshots/typescript/errorRecovery/interface-with-no-body.src.ts.shot
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`typescript errorRecovery interface-with-no-body.src 1`] = `
-Object {
+TSError {
"column": 0,
"index": 14,
"lineNumber": 2,
diff --git a/packages/typescript-estree/tests/snapshots/typescript/types/constructor-abstract.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/types/constructor-abstract.src.ts.shot
new file mode 100644
index 000000000000..2896e8859179
--- /dev/null
+++ b/packages/typescript-estree/tests/snapshots/typescript/types/constructor-abstract.src.ts.shot
@@ -0,0 +1,333 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`typescript types constructor-abstract.src 1`] = `
+Object {
+ "body": Array [
+ Object {
+ "declarations": Array [
+ Object {
+ "id": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 32,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 6,
+ "line": 1,
+ },
+ },
+ "name": "x",
+ "range": Array [
+ 6,
+ 32,
+ ],
+ "type": "Identifier",
+ "typeAnnotation": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 32,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 7,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 7,
+ 32,
+ ],
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": Object {
+ "abstract": true,
+ "loc": Object {
+ "end": Object {
+ "column": 32,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 9,
+ "line": 1,
+ },
+ },
+ "params": Array [],
+ "range": Array [
+ 9,
+ 32,
+ ],
+ "returnType": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 32,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 25,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 25,
+ 32,
+ ],
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 32,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 28,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 28,
+ 32,
+ ],
+ "type": "TSVoidKeyword",
+ },
+ },
+ "type": "TSConstructorType",
+ },
+ },
+ },
+ "init": null,
+ "loc": Object {
+ "end": Object {
+ "column": 32,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 6,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 6,
+ 32,
+ ],
+ "type": "VariableDeclarator",
+ },
+ ],
+ "kind": "const",
+ "loc": Object {
+ "end": Object {
+ "column": 33,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 0,
+ 33,
+ ],
+ "type": "VariableDeclaration",
+ },
+ ],
+ "comments": Array [],
+ "loc": Object {
+ "end": Object {
+ "column": 0,
+ "line": 2,
+ },
+ "start": Object {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 0,
+ 34,
+ ],
+ "sourceType": "script",
+ "tokens": Array [
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 5,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 0,
+ 5,
+ ],
+ "type": "Keyword",
+ "value": "const",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 7,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 6,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 6,
+ 7,
+ ],
+ "type": "Identifier",
+ "value": "x",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 8,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 7,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 7,
+ 8,
+ ],
+ "type": "Punctuator",
+ "value": ":",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 17,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 9,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 9,
+ 17,
+ ],
+ "type": "Identifier",
+ "value": "abstract",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 21,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 18,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 18,
+ 21,
+ ],
+ "type": "Keyword",
+ "value": "new",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 23,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 22,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 22,
+ 23,
+ ],
+ "type": "Punctuator",
+ "value": "(",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 24,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 23,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 23,
+ 24,
+ ],
+ "type": "Punctuator",
+ "value": ")",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 27,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 25,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 25,
+ 27,
+ ],
+ "type": "Punctuator",
+ "value": "=>",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 32,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 28,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 28,
+ 32,
+ ],
+ "type": "Keyword",
+ "value": "void",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 33,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 32,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 32,
+ 33,
+ ],
+ "type": "Punctuator",
+ "value": ";",
+ },
+ ],
+ "type": "Program",
+}
+`;
diff --git a/packages/typescript-estree/tests/snapshots/typescript/types/constructor-empty.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/types/constructor-empty.src.ts.shot
new file mode 100644
index 000000000000..cb15aec46848
--- /dev/null
+++ b/packages/typescript-estree/tests/snapshots/typescript/types/constructor-empty.src.ts.shot
@@ -0,0 +1,315 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`typescript types constructor-empty.src 1`] = `
+Object {
+ "body": Array [
+ Object {
+ "declarations": Array [
+ Object {
+ "id": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 23,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 6,
+ "line": 1,
+ },
+ },
+ "name": "x",
+ "range": Array [
+ 6,
+ 23,
+ ],
+ "type": "Identifier",
+ "typeAnnotation": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 23,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 7,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 7,
+ 23,
+ ],
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": Object {
+ "abstract": false,
+ "loc": Object {
+ "end": Object {
+ "column": 23,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 9,
+ "line": 1,
+ },
+ },
+ "params": Array [],
+ "range": Array [
+ 9,
+ 23,
+ ],
+ "returnType": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 23,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 16,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 16,
+ 23,
+ ],
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": Object {
+ "loc": Object {
+ "end": Object {
+ "column": 23,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 19,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 19,
+ 23,
+ ],
+ "type": "TSVoidKeyword",
+ },
+ },
+ "type": "TSConstructorType",
+ },
+ },
+ },
+ "init": null,
+ "loc": Object {
+ "end": Object {
+ "column": 23,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 6,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 6,
+ 23,
+ ],
+ "type": "VariableDeclarator",
+ },
+ ],
+ "kind": "const",
+ "loc": Object {
+ "end": Object {
+ "column": 24,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 0,
+ 24,
+ ],
+ "type": "VariableDeclaration",
+ },
+ ],
+ "comments": Array [],
+ "loc": Object {
+ "end": Object {
+ "column": 0,
+ "line": 2,
+ },
+ "start": Object {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 0,
+ 25,
+ ],
+ "sourceType": "script",
+ "tokens": Array [
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 5,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 0,
+ 5,
+ ],
+ "type": "Keyword",
+ "value": "const",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 7,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 6,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 6,
+ 7,
+ ],
+ "type": "Identifier",
+ "value": "x",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 8,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 7,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 7,
+ 8,
+ ],
+ "type": "Punctuator",
+ "value": ":",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 12,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 9,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 9,
+ 12,
+ ],
+ "type": "Keyword",
+ "value": "new",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 14,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 13,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 13,
+ 14,
+ ],
+ "type": "Punctuator",
+ "value": "(",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 15,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 14,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 14,
+ 15,
+ ],
+ "type": "Punctuator",
+ "value": ")",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 18,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 16,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 16,
+ 18,
+ ],
+ "type": "Punctuator",
+ "value": "=>",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 23,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 19,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 19,
+ 23,
+ ],
+ "type": "Keyword",
+ "value": "void",
+ },
+ Object {
+ "loc": Object {
+ "end": Object {
+ "column": 24,
+ "line": 1,
+ },
+ "start": Object {
+ "column": 23,
+ "line": 1,
+ },
+ },
+ "range": Array [
+ 23,
+ 24,
+ ],
+ "type": "Punctuator",
+ "value": ";",
+ },
+ ],
+ "type": "Program",
+}
+`;
diff --git a/packages/typescript-estree/tests/snapshots/typescript/types/constructor-generic.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/types/constructor-generic.src.ts.shot
index 8472c563eedb..d0434a7edb77 100644
--- a/packages/typescript-estree/tests/snapshots/typescript/types/constructor-generic.src.ts.shot
+++ b/packages/typescript-estree/tests/snapshots/typescript/types/constructor-generic.src.ts.shot
@@ -40,6 +40,7 @@ Object {
],
"type": "TSTypeAnnotation",
"typeAnnotation": Object {
+ "abstract": false,
"loc": Object {
"end": Object {
"column": 25,
diff --git a/packages/typescript-estree/tests/snapshots/typescript/types/constructor-in-generic.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/types/constructor-in-generic.src.ts.shot
index e54dffb608d0..e74c46c3f4cd 100644
--- a/packages/typescript-estree/tests/snapshots/typescript/types/constructor-in-generic.src.ts.shot
+++ b/packages/typescript-estree/tests/snapshots/typescript/types/constructor-in-generic.src.ts.shot
@@ -86,6 +86,7 @@ Object {
},
"params": Array [
Object {
+ "abstract": false,
"loc": Object {
"end": Object {
"column": 29,
diff --git a/packages/typescript-estree/tests/snapshots/typescript/types/constructor-with-rest.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/types/constructor-with-rest.src.ts.shot
index 419b2d8790df..e001f2adb029 100644
--- a/packages/typescript-estree/tests/snapshots/typescript/types/constructor-with-rest.src.ts.shot
+++ b/packages/typescript-estree/tests/snapshots/typescript/types/constructor-with-rest.src.ts.shot
@@ -40,6 +40,7 @@ Object {
],
"type": "TSTypeAnnotation",
"typeAnnotation": Object {
+ "abstract": false,
"loc": Object {
"end": Object {
"column": 35,
diff --git a/packages/typescript-estree/tests/snapshots/typescript/types/constructor.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/types/constructor.src.ts.shot
index 79710aea0ac7..03af1a6c2c07 100644
--- a/packages/typescript-estree/tests/snapshots/typescript/types/constructor.src.ts.shot
+++ b/packages/typescript-estree/tests/snapshots/typescript/types/constructor.src.ts.shot
@@ -40,6 +40,7 @@ Object {
],
"type": "TSTypeAnnotation",
"typeAnnotation": Object {
+ "abstract": false,
"loc": Object {
"end": Object {
"column": 42,
diff --git a/packages/typescript-estree/tools/tserror-serializer.ts b/packages/typescript-estree/tools/tserror-serializer.ts
new file mode 100644
index 000000000000..b56ed97e837b
--- /dev/null
+++ b/packages/typescript-estree/tools/tserror-serializer.ts
@@ -0,0 +1,18 @@
+import { TSError } from '../src/node-utils';
+import type { Plugin } from 'pretty-format';
+
+export const serializer: Plugin = {
+ test: (val: unknown): val is TSError => val instanceof TSError,
+ serialize(val: TSError, config, indentation, depth, refs, printer) {
+ const format = (value: unknown): string =>
+ printer(value, config, indentation, depth + 1, refs);
+ return (
+ `${val.name} {\n` +
+ `${config.indent}"column": ${format(val.column)},\n` +
+ `${config.indent}"index": ${format(val.index)},\n` +
+ `${config.indent}"lineNumber": ${format(val.lineNumber)},\n` +
+ `${config.indent}"message": ${format(val.message)},\n` +
+ `}`
+ );
+ },
+};
diff --git a/packages/visitor-keys/CHANGELOG.md b/packages/visitor-keys/CHANGELOG.md
index ed1ff385041d..ec2f981fba43 100644
--- a/packages/visitor-keys/CHANGELOG.md
+++ b/packages/visitor-keys/CHANGELOG.md
@@ -3,6 +3,17 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [4.16.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.2...v4.16.0) (2021-03-01)
+
+
+### Features
+
+* TypeScript 4.2 syntax support ([#3112](https://github.com/typescript-eslint/typescript-eslint/issues/3112)) ([2ebfb21](https://github.com/typescript-eslint/typescript-eslint/commit/2ebfb21ba6c88c793cfbd0e231e5803b2381694c))
+
+
+
+
+
## [4.15.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.1...v4.15.2) (2021-02-22)
diff --git a/packages/visitor-keys/package.json b/packages/visitor-keys/package.json
index e3a6c00d1a54..209b5db6a826 100644
--- a/packages/visitor-keys/package.json
+++ b/packages/visitor-keys/package.json
@@ -1,6 +1,6 @@
{
"name": "@typescript-eslint/visitor-keys",
- "version": "4.15.2",
+ "version": "4.16.0",
"description": "Visitor keys used to help traverse the TypeScript-ESTree AST",
"keywords": [
"eslint",
@@ -38,7 +38,7 @@
"typecheck": "tsc -p tsconfig.json --noEmit"
},
"dependencies": {
- "@typescript-eslint/types": "4.15.2",
+ "@typescript-eslint/types": "4.16.0",
"eslint-visitor-keys": "^2.0.0"
},
"devDependencies": {
diff --git a/packages/visitor-keys/tests/visitor-keys.test.ts b/packages/visitor-keys/tests/visitor-keys.test.ts
index a8ee4a78336f..a6fe66bc5408 100644
--- a/packages/visitor-keys/tests/visitor-keys.test.ts
+++ b/packages/visitor-keys/tests/visitor-keys.test.ts
@@ -16,7 +16,6 @@ describe('Every ast node type should have a visitor key defined', () => {
const IGNORED_KEYS = new Set([
'ExperimentalRestProperty',
'ExperimentalSpreadProperty',
- 'JSXNamespacedName',
]);
describe('Every visitor key should have an ast node type defined', () => {
for (const key of keys) {
diff --git a/yarn.lock b/yarn.lock
index 831a96fd4bb7..7391d1c4c005 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -16,36 +16,52 @@
dependencies:
"@babel/highlight" "^7.12.13"
+"@babel/compat-data@^7.13.0":
+ version "7.13.6"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.6.tgz#11972d07db4c2317afdbf41d6feb3a730301ef4e"
+ integrity sha512-VhgqKOWYVm7lQXlvbJnWOzwfAQATd2nV52koT0HZ/LdDH0m4DUDwkKYsH+IwpXb+bKPyBJzawA4I6nBKqZcpQw==
+
"@babel/core@^7.1.0", "@babel/core@^7.7.5":
- version "7.12.16"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.16.tgz#8c6ba456b23b680a6493ddcfcd9d3c3ad51cab7c"
- integrity sha512-t/hHIB504wWceOeaOoONOhu+gX+hpjfeN6YRBT209X/4sibZQfSF1I0HFRRlBe97UZZosGx5XwUg1ZgNbelmNw==
+ version "7.13.1"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.1.tgz#7ddd027176debe40f13bb88bac0c21218c5b1ecf"
+ integrity sha512-FzeKfFBG2rmFtGiiMdXZPFt/5R5DXubVi82uYhjGX4Msf+pgYQMCFIqFXZWs5vbIYbf14VeBIgdGI03CDOOM1w==
dependencies:
"@babel/code-frame" "^7.12.13"
- "@babel/generator" "^7.12.15"
- "@babel/helper-module-transforms" "^7.12.13"
- "@babel/helpers" "^7.12.13"
- "@babel/parser" "^7.12.16"
+ "@babel/generator" "^7.13.0"
+ "@babel/helper-compilation-targets" "^7.13.0"
+ "@babel/helper-module-transforms" "^7.13.0"
+ "@babel/helpers" "^7.13.0"
+ "@babel/parser" "^7.13.0"
"@babel/template" "^7.12.13"
- "@babel/traverse" "^7.12.13"
- "@babel/types" "^7.12.13"
+ "@babel/traverse" "^7.13.0"
+ "@babel/types" "^7.13.0"
convert-source-map "^1.7.0"
debug "^4.1.0"
- gensync "^1.0.0-beta.1"
+ gensync "^1.0.0-beta.2"
json5 "^2.1.2"
lodash "^4.17.19"
- semver "^5.4.1"
+ semver "7.0.0"
source-map "^0.5.0"
-"@babel/generator@^7.12.13", "@babel/generator@^7.12.15":
- version "7.12.15"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.15.tgz#4617b5d0b25cc572474cc1aafee1edeaf9b5368f"
- integrity sha512-6F2xHxBiFXWNSGb7vyCUTBF8RCLY66rS0zEPcP8t/nQyXjha5EuK4z7H5o7fWG8B4M7y6mqVWq1J+1PuwRhecQ==
+"@babel/generator@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.0.tgz#bd00d4394ca22f220390c56a0b5b85568ec1ec0c"
+ integrity sha512-zBZfgvBB/ywjx0Rgc2+BwoH/3H+lDtlgD4hBOpEv5LxRnYsm/753iRuLepqnYlynpjC3AdQxtxsoeHJoEEwOAw==
dependencies:
- "@babel/types" "^7.12.13"
+ "@babel/types" "^7.13.0"
jsesc "^2.5.1"
source-map "^0.5.0"
+"@babel/helper-compilation-targets@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.0.tgz#c9cf29b82a76fd637f0faa35544c4ace60a155a1"
+ integrity sha512-SOWD0JK9+MMIhTQiUVd4ng8f3NXhPVQvTv7D3UN4wbp/6cAHnB2EmMaU1zZA2Hh1gwme+THBrVSqTFxHczTh0Q==
+ dependencies:
+ "@babel/compat-data" "^7.13.0"
+ "@babel/helper-validator-option" "^7.12.17"
+ browserslist "^4.14.5"
+ semver "7.0.0"
+
"@babel/helper-function-name@^7.12.13":
version "7.12.13"
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a"
@@ -62,12 +78,12 @@
dependencies:
"@babel/types" "^7.12.13"
-"@babel/helper-member-expression-to-functions@^7.12.13":
- version "7.12.16"
- resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.16.tgz#41e0916b99f8d5f43da4f05d85f4930fa3d62b22"
- integrity sha512-zYoZC1uvebBFmj1wFAlXwt35JLEgecefATtKp20xalwEK8vHAixLBXTGxNrVGEmTT+gzOThUgr8UEdgtalc1BQ==
+"@babel/helper-member-expression-to-functions@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz#6aa4bb678e0f8c22f58cdb79451d30494461b091"
+ integrity sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ==
dependencies:
- "@babel/types" "^7.12.13"
+ "@babel/types" "^7.13.0"
"@babel/helper-module-imports@^7.12.13":
version "7.12.13"
@@ -76,19 +92,19 @@
dependencies:
"@babel/types" "^7.12.13"
-"@babel/helper-module-transforms@^7.12.13":
- version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.13.tgz#01afb052dcad2044289b7b20beb3fa8bd0265bea"
- integrity sha512-acKF7EjqOR67ASIlDTupwkKM1eUisNAjaSduo5Cz+793ikfnpe7p4Q7B7EWU2PCoSTPWsQkR7hRUWEIZPiVLGA==
+"@babel/helper-module-transforms@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz#42eb4bd8eea68bab46751212c357bfed8b40f6f1"
+ integrity sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw==
dependencies:
"@babel/helper-module-imports" "^7.12.13"
- "@babel/helper-replace-supers" "^7.12.13"
+ "@babel/helper-replace-supers" "^7.13.0"
"@babel/helper-simple-access" "^7.12.13"
"@babel/helper-split-export-declaration" "^7.12.13"
"@babel/helper-validator-identifier" "^7.12.11"
"@babel/template" "^7.12.13"
- "@babel/traverse" "^7.12.13"
- "@babel/types" "^7.12.13"
+ "@babel/traverse" "^7.13.0"
+ "@babel/types" "^7.13.0"
lodash "^4.17.19"
"@babel/helper-optimise-call-expression@^7.12.13":
@@ -99,19 +115,19 @@
"@babel/types" "^7.12.13"
"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.8.0":
- version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.12.13.tgz#174254d0f2424d8aefb4dd48057511247b0a9eeb"
- integrity sha512-C+10MXCXJLiR6IeG9+Wiejt9jmtFpxUc3MQqCmPY8hfCjyUGl9kT+B2okzEZrtykiwrc4dbCPdDoz0A/HQbDaA==
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af"
+ integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==
-"@babel/helper-replace-supers@^7.12.13":
- version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.13.tgz#00ec4fb6862546bd3d0aff9aac56074277173121"
- integrity sha512-pctAOIAMVStI2TMLhozPKbf5yTEXc0OJa0eENheb4w09SrgOWEs+P4nTOZYJQCqs8JlErGLDPDJTiGIp3ygbLg==
+"@babel/helper-replace-supers@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz#6034b7b51943094cb41627848cb219cb02be1d24"
+ integrity sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw==
dependencies:
- "@babel/helper-member-expression-to-functions" "^7.12.13"
+ "@babel/helper-member-expression-to-functions" "^7.13.0"
"@babel/helper-optimise-call-expression" "^7.12.13"
- "@babel/traverse" "^7.12.13"
- "@babel/types" "^7.12.13"
+ "@babel/traverse" "^7.13.0"
+ "@babel/types" "^7.13.0"
"@babel/helper-simple-access@^7.12.13":
version "7.12.13"
@@ -132,14 +148,19 @@
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==
-"@babel/helpers@^7.12.13":
- version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.13.tgz#3c75e993632e4dadc0274eae219c73eb7645ba47"
- integrity sha512-oohVzLRZ3GQEk4Cjhfs9YkJA4TdIDTObdBEZGrd6F/T0GPSnuV6l22eMcxlvcvzVIPH3VTtxbseudM1zIE+rPQ==
+"@babel/helper-validator-option@^7.12.17":
+ version "7.12.17"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831"
+ integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==
+
+"@babel/helpers@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.0.tgz#7647ae57377b4f0408bf4f8a7af01c42e41badc0"
+ integrity sha512-aan1MeFPxFacZeSz6Ld7YZo5aPuqnKlD7+HZY75xQsueczFccP9A7V05+oe0XpLwHK3oLorPe9eaAUljL7WEaQ==
dependencies:
"@babel/template" "^7.12.13"
- "@babel/traverse" "^7.12.13"
- "@babel/types" "^7.12.13"
+ "@babel/traverse" "^7.13.0"
+ "@babel/types" "^7.13.0"
"@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13":
version "7.12.13"
@@ -150,10 +171,10 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
-"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.12.16":
- version "7.12.16"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.16.tgz#cc31257419d2c3189d394081635703f549fc1ed4"
- integrity sha512-c/+u9cqV6F0+4Hpq01jnJO+GLp2DdT63ppz9Xa+6cHaajM9VFzK/iDXiKK65YtpeVwu+ctfS6iqlMqRgQRzeCw==
+"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.13.0", "@babel/parser@^7.13.4":
+ version "7.13.4"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.4.tgz#340211b0da94a351a6f10e63671fa727333d13ab"
+ integrity sha512-uvoOulWHhI+0+1f9L4BoozY7U5cIkZ9PgJqvb041d6vypgUmtVPG4vmGm4pSggjl8BELzvHyUeJSUyEMY6b+qA==
"@babel/plugin-syntax-async-generators@^7.8.4":
version "7.8.4"
@@ -240,9 +261,9 @@
"@babel/helper-plugin-utils" "^7.12.13"
"@babel/runtime@^7.11.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.7.6":
- version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.13.tgz#0a21452352b02542db0ffb928ac2d3ca7cb6d66d"
- integrity sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw==
+ version "7.13.6"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.6.tgz#86e0fad6cbb46a680e21c1aa4748717a058d345a"
+ integrity sha512-Y/DEVhSQ91u27rxq7D0EH/sewS6+x06p/MgO1VppbDHMzYXLZrAR5cFjCom78e9RUw1BQAq6qJg6fXc/ep7glA==
dependencies:
regenerator-runtime "^0.13.4"
@@ -255,25 +276,25 @@
"@babel/parser" "^7.12.13"
"@babel/types" "^7.12.13"
-"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.13":
- version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.13.tgz#689f0e4b4c08587ad26622832632735fb8c4e0c0"
- integrity sha512-3Zb4w7eE/OslI0fTp8c7b286/cQps3+vdLW3UcwC8VSJC6GbKn55aeVVu2QJNuCDoeKyptLOFrPq8WqZZBodyA==
+"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.0.tgz#6d95752475f86ee7ded06536de309a65fc8966cc"
+ integrity sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==
dependencies:
"@babel/code-frame" "^7.12.13"
- "@babel/generator" "^7.12.13"
+ "@babel/generator" "^7.13.0"
"@babel/helper-function-name" "^7.12.13"
"@babel/helper-split-export-declaration" "^7.12.13"
- "@babel/parser" "^7.12.13"
- "@babel/types" "^7.12.13"
+ "@babel/parser" "^7.13.0"
+ "@babel/types" "^7.13.0"
debug "^4.1.0"
globals "^11.1.0"
lodash "^4.17.19"
-"@babel/types@^7.0.0", "@babel/types@^7.12.13", "@babel/types@^7.3.0", "@babel/types@^7.3.3":
- version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.13.tgz#8be1aa8f2c876da11a9cf650c0ecf656913ad611"
- integrity sha512-oKrdZTld2im1z8bDwTOQvUbxKwE+854zc16qWZQlcTqMN00pWxHQ4ZeOq0yDMnisOpRykH2/5Qqcrk/OlbAjiQ==
+"@babel/types@^7.0.0", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.0.tgz#74424d2816f0171b4100f0ab34e9a374efdf7f80"
+ integrity sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==
dependencies:
"@babel/helper-validator-identifier" "^7.12.11"
lodash "^4.17.19"
@@ -1903,9 +1924,9 @@
integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=
"@types/node@*", "@types/node@>= 8", "@types/node@^14.14.27":
- version "14.14.27"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.27.tgz#c7127f8da0498993e13b1a42faf1303d3110d2f2"
- integrity sha512-Ecfmo4YDQPwuqTCl1yBxLV5ihKfRlkBmzUEDcfIRvDxOTGQEeikr317Ln7Gcv0tjA8dVgKI3rniqW2G1OyKDng==
+ version "14.14.31"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.31.tgz#72286bd33d137aa0d152d47ec7c1762563d34055"
+ integrity sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==
"@types/normalize-package-data@^2.4.0":
version "2.4.0"
@@ -2463,6 +2484,17 @@ browser-process-hrtime@^1.0.0:
resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626"
integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
+browserslist@^4.14.5:
+ version "4.16.3"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717"
+ integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==
+ dependencies:
+ caniuse-lite "^1.0.30001181"
+ colorette "^1.2.1"
+ electron-to-chromium "^1.3.649"
+ escalade "^3.1.1"
+ node-releases "^1.1.70"
+
bs-logger@0.x:
version "0.2.6"
resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8"
@@ -2623,6 +2655,11 @@ camelcase@^6.0.0:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809"
integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==
+caniuse-lite@^1.0.30001181:
+ version "1.0.30001191"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001191.tgz#bacb432b6701f690c8c5f7c680166b9a9f0843d9"
+ integrity sha512-xJJqzyd+7GCJXkcoBiQ1GuxEiOBCLQ0aVW9HMekifZsAVGdj5eJ4mFB9fEhSHipq9IOk/QXFJUiIr9lZT+EsGw==
+
capture-exit@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4"
@@ -2803,6 +2840,11 @@ color-name@~1.1.4:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+colorette@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b"
+ integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==
+
columnify@^1.5.4:
version "1.5.4"
resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb"
@@ -3514,6 +3556,11 @@ ecc-jsbn@~0.1.1:
jsbn "~0.1.0"
safer-buffer "^2.1.0"
+electron-to-chromium@^1.3.649:
+ version "1.3.672"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.672.tgz#3a6e335016dab4bc584d5292adc4f98f54541f6a"
+ integrity sha512-gFQe7HBb0lbOMqK2GAS5/1F+B0IMdYiAgB9OT/w1F4M7lgJK2aNOMNOM622aEax+nS1cTMytkiT0uMOkbtFmHw==
+
emittery@^0.7.1:
version "0.7.2"
resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82"
@@ -3615,6 +3662,11 @@ es6-promisify@^5.0.0:
dependencies:
es6-promise "^4.0.3"
+escalade@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
+ integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
+
escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
@@ -3686,9 +3738,9 @@ eslint-plugin-import@^2.22.0:
tsconfig-paths "^3.9.0"
eslint-plugin-jest@^24.1.3:
- version "24.1.3"
- resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-24.1.3.tgz#fa3db864f06c5623ff43485ca6c0e8fc5fe8ba0c"
- integrity sha512-dNGGjzuEzCE3d5EPZQ/QGtmlMotqnYWD/QpCZ1UuZlrMAdhG5rldh0N0haCvhGnUkSeuORS5VNROwF9Hrgn3Lg==
+ version "24.1.5"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-24.1.5.tgz#1e866a9f0deac587d0a3d5d7cefe99815a580de2"
+ integrity sha512-FIP3lwC8EzEG+rOs1y96cOJmMVpdFNreoDJv29B5vIupVssRi8zrSY3QadogT0K3h1Y8TMxJ6ZSAzYUmFCp2hg==
dependencies:
"@typescript-eslint/experimental-utils" "^4.0.1"
@@ -4223,7 +4275,7 @@ gensequence@^3.1.1:
resolved "https://registry.yarnpkg.com/gensequence/-/gensequence-3.1.1.tgz#95c1afc7c0680f92942c17f2d6f83f3d26ea97af"
integrity sha512-ys3h0hiteRwmY6BsvSttPmkhC0vEQHPJduANBRtH/dlDPZ0UBIb/dXy80IcckXyuQ6LKg+PloRqvGER9IS7F7g==
-gensync@^1.0.0-beta.1:
+gensync@^1.0.0-beta.2:
version "1.0.0-beta.2"
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
@@ -4634,9 +4686,9 @@ humanize-ms@^1.2.1:
ms "^2.0.0"
husky@^5.0.9:
- version "5.0.9"
- resolved "https://registry.yarnpkg.com/husky/-/husky-5.0.9.tgz#6d38706643d66ed395bcd4ee952d02e3f15eb3a3"
- integrity sha512-0SjcaY21a+IRdx7p7r/X33Vc09UR2m8SbP8yfkhUX2/jAmwcz+GR7i9jXkp2pP3GfX23JhMkVP6SWwXB18uXtg==
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/husky/-/husky-5.1.1.tgz#8678953fd8deb86f387cbf1ad50bb2f7f96e83f2"
+ integrity sha512-80LZ736V0Nr4/st0c2COYaMbEQhHNmAbLMN8J/kLk7/mo0QdUkUGNDjv/7jVkhug377Wh8wfbWyaVXEJ/h2B/Q==
iconv-lite@0.4.24, iconv-lite@^0.4.24:
version "0.4.24"
@@ -5957,9 +6009,9 @@ lodash.uniq@^4.5.0:
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
lodash@4.x, lodash@^4.11.2, lodash@^4.17.12, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.2.1:
- version "4.17.20"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
- integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
+ version "4.17.21"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
+ integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
log-symbols@^4.0.0:
version "4.0.0"
@@ -6486,6 +6538,11 @@ node-notifier@^8.0.0:
uuid "^8.3.0"
which "^2.0.2"
+node-releases@^1.1.70:
+ version "1.1.71"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb"
+ integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==
+
nopt@^4.0.1:
version "4.0.3"
resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48"
@@ -7709,6 +7766,11 @@ semver-compare@^1.0.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
+semver@7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
+ integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
+
semver@7.3.2:
version "7.3.2"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
@@ -8604,10 +8666,10 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
-typescript@*, typescript@4.1.5, "typescript@>=3.3.1 <4.2.0", typescript@^4.1.0-dev.20201026:
- version "4.1.5"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.5.tgz#123a3b214aaff3be32926f0d8f1f6e704eb89a72"
- integrity sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA==
+typescript@*, typescript@4.2.2, "typescript@>=3.3.1 <4.3.0", typescript@^4.1.0-dev.20201026:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.2.tgz#1450f020618f872db0ea17317d16d8da8ddb8c4c"
+ integrity sha512-tbb+NVrLfnsJy3M59lsDgrzWIflR4d4TIUjz+heUnHZwdF7YsrMTKoRERiIvI2lvBG95dfpLxB21WZhys1bgaQ==
uc.micro@^1.0.1, uc.micro@^1.0.5:
version "1.0.6"