From 27d4f414400ee3b4314bacac957c95234b8d070c Mon Sep 17 00:00:00 2001 From: Armano Date: Fri, 19 Feb 2021 21:53:13 +0100 Subject: [PATCH 1/4] feat: align class property with estree stage3 class-features --- .../src/rules/class-literal-property-style.ts | 2 +- .../rules/explicit-member-accessibility.ts | 8 +-- .../rules/explicit-module-boundary-types.ts | 4 +- .../src/rules/indent-new-do-not-use/index.ts | 4 +- packages/eslint-plugin/src/rules/indent.ts | 12 ++--- .../src/rules/member-ordering.ts | 10 ++-- .../src/rules/naming-convention.ts | 26 +++++----- .../eslint-plugin/src/rules/no-extra-semi.ts | 2 +- .../src/rules/no-inferrable-types.ts | 8 +-- .../src/rules/no-invalid-this.ts | 4 +- .../src/rules/no-invalid-void-type.ts | 2 +- .../src/rules/no-magic-numbers.ts | 2 +- .../src/rules/no-unsafe-assignment.ts | 4 +- packages/eslint-plugin/src/rules/quotes.ts | 4 +- packages/eslint-plugin/src/rules/semi.ts | 4 +- packages/eslint-plugin/src/rules/typedef.ts | 2 +- .../src/util/explicitReturnTypeUtils.ts | 8 +-- packages/eslint-plugin/src/util/misc.ts | 6 +-- .../tests/rules/indent/indent.test.ts | 2 +- .../eslint-plugin/tests/rules/quotes.test.ts | 8 +-- .../src/ast-utils/predicates.ts | 4 +- .../experimental-utils/src/ts-eslint/Rule.ts | 4 +- .../src/referencer/ClassVisitor.ts | 12 ++--- packages/types/src/ast-node-types.ts | 4 +- packages/types/src/ts-estree.ts | 52 +++++++++---------- packages/typescript-estree/src/convert.ts | 6 +-- .../src/ts-estree/estree-to-ts-node-types.ts | 4 +- .../tests/ast-alignment/utils.ts | 8 +-- .../tests/lib/semanticInfo.test.ts | 2 +- packages/visitor-keys/src/visitor-keys.ts | 9 +++- 30 files changed, 119 insertions(+), 108 deletions(-) diff --git a/packages/eslint-plugin/src/rules/class-literal-property-style.ts b/packages/eslint-plugin/src/rules/class-literal-property-style.ts index 0a257427ec10..9b7342ff9025 100644 --- a/packages/eslint-plugin/src/rules/class-literal-property-style.ts +++ b/packages/eslint-plugin/src/rules/class-literal-property-style.ts @@ -100,7 +100,7 @@ export default util.createRule({ } return { - ClassProperty(node: TSESTree.ClassProperty): void { + PropertyDefinition(node: TSESTree.PropertyDefinition): void { if (!node.readonly || node.declare) { return; } diff --git a/packages/eslint-plugin/src/rules/explicit-member-accessibility.ts b/packages/eslint-plugin/src/rules/explicit-member-accessibility.ts index 23ac95814c06..50d4acd9c74a 100644 --- a/packages/eslint-plugin/src/rules/explicit-member-accessibility.ts +++ b/packages/eslint-plugin/src/rules/explicit-member-accessibility.ts @@ -163,7 +163,7 @@ export default util.createRule({ function getUnwantedPublicAccessibilityFixer( node: | TSESTree.MethodDefinition - | TSESTree.ClassProperty + | TSESTree.PropertyDefinition | TSESTree.TSParameterProperty, ): TSESLint.ReportFixFunction { return function (fixer: TSESLint.RuleFixer): TSESLint.RuleFix { @@ -200,10 +200,10 @@ export default util.createRule({ /** * Checks if property has an accessibility modifier. - * @param classProperty The node representing a ClassProperty. + * @param classProperty The node representing a PropertyDefinition. */ function checkPropertyAccessibilityModifier( - classProperty: TSESTree.ClassProperty, + classProperty: TSESTree.PropertyDefinition, ): void { const nodeType = 'class property'; @@ -275,7 +275,7 @@ export default util.createRule({ return { TSParameterProperty: checkParameterPropertyAccessibilityModifier, - ClassProperty: checkPropertyAccessibilityModifier, + PropertyDefinition: checkPropertyAccessibilityModifier, MethodDefinition: checkMethodAccessibilityModifier, }; }, diff --git a/packages/eslint-plugin/src/rules/explicit-module-boundary-types.ts b/packages/eslint-plugin/src/rules/explicit-module-boundary-types.ts index bdcd9750c887..4f1de3f37949 100644 --- a/packages/eslint-plugin/src/rules/explicit-module-boundary-types.ts +++ b/packages/eslint-plugin/src/rules/explicit-module-boundary-types.ts @@ -335,8 +335,8 @@ export default util.createRule({ } return; - case AST_NODE_TYPES.ClassProperty: - case AST_NODE_TYPES.TSAbstractClassProperty: + case AST_NODE_TYPES.PropertyDefinition: + case AST_NODE_TYPES.TSAbstractPropertyDefinition: if (node.accessibility === 'private') { return; } diff --git a/packages/eslint-plugin/src/rules/indent-new-do-not-use/index.ts b/packages/eslint-plugin/src/rules/indent-new-do-not-use/index.ts index 7b6bf6d35b99..40beb7f4009c 100644 --- a/packages/eslint-plugin/src/rules/indent-new-do-not-use/index.ts +++ b/packages/eslint-plugin/src/rules/indent-new-do-not-use/index.ts @@ -114,7 +114,7 @@ const KNOWN_NODES = new Set([ AST_NODE_TYPES.ImportNamespaceSpecifier, // Class properties aren't yet supported by eslint... - AST_NODE_TYPES.ClassProperty, + AST_NODE_TYPES.PropertyDefinition, // ts keywords AST_NODE_TYPES.TSAbstractKeyword, @@ -130,7 +130,7 @@ const KNOWN_NODES = new Set([ AST_NODE_TYPES.TSNullKeyword, // ts specific nodes we want to support - AST_NODE_TYPES.TSAbstractClassProperty, + AST_NODE_TYPES.TSAbstractPropertyDefinition, AST_NODE_TYPES.TSAbstractMethodDefinition, AST_NODE_TYPES.TSArrayType, AST_NODE_TYPES.TSAsExpression, diff --git a/packages/eslint-plugin/src/rules/indent.ts b/packages/eslint-plugin/src/rules/indent.ts index 9ac6a1593d9c..bb87f44e8e3e 100644 --- a/packages/eslint-plugin/src/rules/indent.ts +++ b/packages/eslint-plugin/src/rules/indent.ts @@ -17,7 +17,7 @@ type MessageIds = util.InferMessageIdsTypeFromRule; const KNOWN_NODES = new Set([ // Class properties aren't yet supported by eslint... - AST_NODE_TYPES.ClassProperty, + AST_NODE_TYPES.PropertyDefinition, // ts keywords AST_NODE_TYPES.TSAbstractKeyword, @@ -33,7 +33,7 @@ const KNOWN_NODES = new Set([ AST_NODE_TYPES.TSNullKeyword, // ts specific nodes we want to support - AST_NODE_TYPES.TSAbstractClassProperty, + AST_NODE_TYPES.TSAbstractPropertyDefinition, AST_NODE_TYPES.TSAbstractMethodDefinition, AST_NODE_TYPES.TSArrayType, AST_NODE_TYPES.TSAsExpression, @@ -138,7 +138,7 @@ export default util.createRule({ | TSESTree.TSEnumMember | TSESTree.TypeElement, type: - | AST_NODE_TYPES.ClassProperty + | AST_NODE_TYPES.PropertyDefinition | AST_NODE_TYPES.Property = AST_NODE_TYPES.Property, ): TSESTree.Node | null { const base = { @@ -170,7 +170,7 @@ export default util.createRule({ readonly: false, declare: false, ...base, - } as TSESTree.ClassProperty; + } as TSESTree.PropertyDefinition; } } @@ -333,8 +333,8 @@ export default util.createRule({ p => TSPropertySignatureToProperty( p, - AST_NODE_TYPES.ClassProperty, - ) as TSESTree.ClassProperty, + AST_NODE_TYPES.PropertyDefinition, + ) as TSESTree.PropertyDefinition, ), // location data diff --git a/packages/eslint-plugin/src/rules/member-ordering.ts b/packages/eslint-plugin/src/rules/member-ordering.ts index de5b971f5339..05912b516fa7 100644 --- a/packages/eslint-plugin/src/rules/member-ordering.ts +++ b/packages/eslint-plugin/src/rules/member-ordering.ts @@ -179,8 +179,8 @@ function getNodeType(node: Member): string | null { return 'method'; case AST_NODE_TYPES.TSConstructSignatureDeclaration: return 'constructor'; - case AST_NODE_TYPES.TSAbstractClassProperty: - case AST_NODE_TYPES.ClassProperty: + case AST_NODE_TYPES.TSAbstractPropertyDefinition: + case AST_NODE_TYPES.PropertyDefinition: return node.value && functionExpressions.includes(node.value.type) ? 'method' : 'field'; @@ -206,8 +206,8 @@ function getMemberName( switch (node.type) { case AST_NODE_TYPES.TSPropertySignature: case AST_NODE_TYPES.TSMethodSignature: - case AST_NODE_TYPES.TSAbstractClassProperty: - case AST_NODE_TYPES.ClassProperty: + case AST_NODE_TYPES.TSAbstractPropertyDefinition: + case AST_NODE_TYPES.PropertyDefinition: return util.getNameFromMember(node, sourceCode); case AST_NODE_TYPES.TSAbstractMethodDefinition: case AST_NODE_TYPES.MethodDefinition: @@ -265,7 +265,7 @@ function getRank( } const abstract = - node.type === AST_NODE_TYPES.TSAbstractClassProperty || + node.type === AST_NODE_TYPES.TSAbstractPropertyDefinition || node.type === AST_NODE_TYPES.TSAbstractMethodDefinition; const scope = diff --git a/packages/eslint-plugin/src/rules/naming-convention.ts b/packages/eslint-plugin/src/rules/naming-convention.ts index 16e31b62ef8a..38ec78c2724f 100644 --- a/packages/eslint-plugin/src/rules/naming-convention.ts +++ b/packages/eslint-plugin/src/rules/naming-convention.ts @@ -103,8 +103,8 @@ export default util.createRule({ validator: ValidatorFunction | null, node: | TSESTree.PropertyNonComputedName - | TSESTree.ClassPropertyNonComputedName - | TSESTree.TSAbstractClassPropertyNonComputedName + | TSESTree.PropertyDefinitionNonComputedName + | TSESTree.TSAbstractPropertyDefinitionNonComputedName | TSESTree.TSPropertySignatureNonComputedName | TSESTree.MethodDefinitionNonComputedName | TSESTree.TSAbstractMethodDefinitionNonComputedName @@ -125,8 +125,8 @@ export default util.createRule({ function getMemberModifiers( node: - | TSESTree.ClassProperty - | TSESTree.TSAbstractClassProperty + | TSESTree.PropertyDefinition + | TSESTree.TSAbstractPropertyDefinition | TSESTree.MethodDefinition | TSESTree.TSAbstractMethodDefinition | TSESTree.TSParameterProperty, @@ -144,7 +144,7 @@ export default util.createRule({ modifiers.add(Modifiers.readonly); } if ( - node.type === AST_NODE_TYPES.TSAbstractClassProperty || + node.type === AST_NODE_TYPES.TSAbstractPropertyDefinition || node.type === AST_NODE_TYPES.TSAbstractMethodDefinition ) { modifiers.add(Modifiers.abstract); @@ -331,10 +331,10 @@ export default util.createRule({ handleMember(validators.objectLiteralProperty, node, modifiers); }, - ':matches(ClassProperty, TSAbstractClassProperty)[computed = false][value.type != "ArrowFunctionExpression"][value.type != "FunctionExpression"][value.type != "TSEmptyBodyFunctionExpression"]'( + ':matches(PropertyDefinition, TSAbstractPropertyDefinition)[computed = false][value.type != "ArrowFunctionExpression"][value.type != "FunctionExpression"][value.type != "TSEmptyBodyFunctionExpression"]'( node: - | TSESTree.ClassPropertyNonComputedName - | TSESTree.TSAbstractClassPropertyNonComputedName, + | TSESTree.PropertyDefinitionNonComputedName + | TSESTree.TSAbstractPropertyDefinitionNonComputedName, ): void { const modifiers = getMemberModifiers(node); handleMember(validators.classProperty, node, modifiers); @@ -369,14 +369,14 @@ export default util.createRule({ }, [[ - ':matches(ClassProperty, TSAbstractClassProperty)[computed = false][value.type = "ArrowFunctionExpression"]', - ':matches(ClassProperty, TSAbstractClassProperty)[computed = false][value.type = "FunctionExpression"]', - ':matches(ClassProperty, TSAbstractClassProperty)[computed = false][value.type = "TSEmptyBodyFunctionExpression"]', + ':matches(PropertyDefinition, TSAbstractPropertyDefinition)[computed = false][value.type = "ArrowFunctionExpression"]', + ':matches(PropertyDefinition, TSAbstractPropertyDefinition)[computed = false][value.type = "FunctionExpression"]', + ':matches(PropertyDefinition, TSAbstractPropertyDefinition)[computed = false][value.type = "TSEmptyBodyFunctionExpression"]', ':matches(MethodDefinition, TSAbstractMethodDefinition)[computed = false][kind = "method"]', ].join(', ')]( node: - | TSESTree.ClassPropertyNonComputedName - | TSESTree.TSAbstractClassPropertyNonComputedName + | TSESTree.PropertyDefinitionNonComputedName + | TSESTree.TSAbstractPropertyDefinitionNonComputedName | TSESTree.MethodDefinitionNonComputedName | TSESTree.TSAbstractMethodDefinitionNonComputedName, ): void { diff --git a/packages/eslint-plugin/src/rules/no-extra-semi.ts b/packages/eslint-plugin/src/rules/no-extra-semi.ts index d1ffdf61d8d4..5c330854a2bc 100644 --- a/packages/eslint-plugin/src/rules/no-extra-semi.ts +++ b/packages/eslint-plugin/src/rules/no-extra-semi.ts @@ -24,7 +24,7 @@ export default util.createRule({ return { ...rules, - ClassProperty(node): void { + PropertyDefinition(node): void { rules.MethodDefinition(node as never); }, }; diff --git a/packages/eslint-plugin/src/rules/no-inferrable-types.ts b/packages/eslint-plugin/src/rules/no-inferrable-types.ts index d6b6538a95d4..b507a4cc2a82 100644 --- a/packages/eslint-plugin/src/rules/no-inferrable-types.ts +++ b/packages/eslint-plugin/src/rules/no-inferrable-types.ts @@ -196,7 +196,7 @@ export default util.createRule({ node: | TSESTree.VariableDeclarator | TSESTree.Parameter - | TSESTree.ClassProperty, + | TSESTree.PropertyDefinition, typeNode: TSESTree.TSTypeAnnotation | undefined, initNode: TSESTree.Expression | null | undefined, ): void { @@ -252,7 +252,9 @@ export default util.createRule({ }); } - function inferrablePropertyVisitor(node: TSESTree.ClassProperty): void { + function inferrablePropertyVisitor( + node: TSESTree.PropertyDefinition, + ): void { // We ignore `readonly` because of Microsoft/TypeScript#14416 // Essentially a readonly property without a type // will result in its value being the type, leading to @@ -268,7 +270,7 @@ export default util.createRule({ FunctionExpression: inferrableParameterVisitor, FunctionDeclaration: inferrableParameterVisitor, ArrowFunctionExpression: inferrableParameterVisitor, - ClassProperty: inferrablePropertyVisitor, + PropertyDefinition: inferrablePropertyVisitor, }; }, }); diff --git a/packages/eslint-plugin/src/rules/no-invalid-this.ts b/packages/eslint-plugin/src/rules/no-invalid-this.ts index 5d056308771f..5159124eff5a 100644 --- a/packages/eslint-plugin/src/rules/no-invalid-this.ts +++ b/packages/eslint-plugin/src/rules/no-invalid-this.ts @@ -50,10 +50,10 @@ export default createRule({ return { ...rules, - ClassProperty(): void { + PropertyDefinition(): void { thisIsValidStack.push(true); }, - 'ClassProperty:exit'(): void { + 'PropertyDefinition:exit'(): void { thisIsValidStack.pop(); }, FunctionDeclaration(node: TSESTree.FunctionDeclaration): void { diff --git a/packages/eslint-plugin/src/rules/no-invalid-void-type.ts b/packages/eslint-plugin/src/rules/no-invalid-void-type.ts index 0dff489e585f..48608b538df8 100644 --- a/packages/eslint-plugin/src/rules/no-invalid-void-type.ts +++ b/packages/eslint-plugin/src/rules/no-invalid-void-type.ts @@ -69,7 +69,7 @@ export default util.createRule<[Options], MessageIds>({ const invalidGrandParents: AST_NODE_TYPES[] = [ AST_NODE_TYPES.TSPropertySignature, AST_NODE_TYPES.CallExpression, - AST_NODE_TYPES.ClassProperty, + AST_NODE_TYPES.PropertyDefinition, AST_NODE_TYPES.Identifier, ]; const validUnionMembers: AST_NODE_TYPES[] = [ diff --git a/packages/eslint-plugin/src/rules/no-magic-numbers.ts b/packages/eslint-plugin/src/rules/no-magic-numbers.ts index 0cb41337c1bb..355356351441 100644 --- a/packages/eslint-plugin/src/rules/no-magic-numbers.ts +++ b/packages/eslint-plugin/src/rules/no-magic-numbers.ts @@ -216,7 +216,7 @@ function isTSNumericLiteralType(node: TSESTree.Node): boolean { function isParentTSReadonlyClassProperty(node: TSESTree.Literal): boolean { const parent = getLiteralParent(node); - if (parent?.type === AST_NODE_TYPES.ClassProperty && parent.readonly) { + if (parent?.type === AST_NODE_TYPES.PropertyDefinition && parent.readonly) { return true; } diff --git a/packages/eslint-plugin/src/rules/no-unsafe-assignment.ts b/packages/eslint-plugin/src/rules/no-unsafe-assignment.ts index 4a8f2a9ea237..3b7df6394b7c 100644 --- a/packages/eslint-plugin/src/rules/no-unsafe-assignment.ts +++ b/packages/eslint-plugin/src/rules/no-unsafe-assignment.ts @@ -303,7 +303,9 @@ export default util.createRule({ checkObjectDestructureHelper(node.id, init); } }, - 'ClassProperty[value != null]'(node: TSESTree.ClassProperty): void { + 'PropertyDefinition[value != null]'( + node: TSESTree.PropertyDefinition, + ): void { checkAssignment( node.key, node.value!, diff --git a/packages/eslint-plugin/src/rules/quotes.ts b/packages/eslint-plugin/src/rules/quotes.ts index 3cbdbce3d875..caa553bdae81 100644 --- a/packages/eslint-plugin/src/rules/quotes.ts +++ b/packages/eslint-plugin/src/rules/quotes.ts @@ -50,8 +50,8 @@ export default util.createRule({ case AST_NODE_TYPES.TSEnumMember: return node === parent.id; - case AST_NODE_TYPES.TSAbstractClassProperty: - case AST_NODE_TYPES.ClassProperty: + case AST_NODE_TYPES.TSAbstractPropertyDefinition: + case AST_NODE_TYPES.PropertyDefinition: return node === parent.key; default: diff --git a/packages/eslint-plugin/src/rules/semi.ts b/packages/eslint-plugin/src/rules/semi.ts index 9c18d0e36712..6cdfd0fb385d 100644 --- a/packages/eslint-plugin/src/rules/semi.ts +++ b/packages/eslint-plugin/src/rules/semi.ts @@ -47,8 +47,8 @@ export default util.createRule({ AST_NODE_TYPES.TSPropertySignature, */ const nodesToCheck = [ - AST_NODE_TYPES.ClassProperty, - AST_NODE_TYPES.TSAbstractClassProperty, + AST_NODE_TYPES.PropertyDefinition, + AST_NODE_TYPES.TSAbstractPropertyDefinition, AST_NODE_TYPES.TSAbstractMethodDefinition, AST_NODE_TYPES.TSDeclareFunction, AST_NODE_TYPES.TSExportAssignment, diff --git a/packages/eslint-plugin/src/rules/typedef.ts b/packages/eslint-plugin/src/rules/typedef.ts index 766401040224..a55dcc4527c5 100644 --- a/packages/eslint-plugin/src/rules/typedef.ts +++ b/packages/eslint-plugin/src/rules/typedef.ts @@ -160,7 +160,7 @@ export default util.createRule<[Options], MessageIds>({ checkParameters(node.params); } }, - ClassProperty(node): void { + PropertyDefinition(node): void { if (node.value && isVariableDeclarationIgnoreFunction(node.value)) { return; } diff --git a/packages/eslint-plugin/src/util/explicitReturnTypeUtils.ts b/packages/eslint-plugin/src/util/explicitReturnTypeUtils.ts index d2c3a684c868..978488803457 100644 --- a/packages/eslint-plugin/src/util/explicitReturnTypeUtils.ts +++ b/packages/eslint-plugin/src/util/explicitReturnTypeUtils.ts @@ -93,8 +93,10 @@ function isVariableDeclaratorWithTypeAnnotation( */ function isClassPropertyWithTypeAnnotation( node: TSESTree.Node, -): node is TSESTree.ClassProperty { - return node.type === AST_NODE_TYPES.ClassProperty && !!node.typeAnnotation; +): node is TSESTree.PropertyDefinition { + return ( + node.type === AST_NODE_TYPES.PropertyDefinition && !!node.typeAnnotation + ); } /** @@ -276,7 +278,7 @@ function isValidFunctionExpressionReturnType( parent.type !== AST_NODE_TYPES.VariableDeclarator && parent.type !== AST_NODE_TYPES.MethodDefinition && parent.type !== AST_NODE_TYPES.ExportDefaultDeclaration && - parent.type !== AST_NODE_TYPES.ClassProperty + parent.type !== AST_NODE_TYPES.PropertyDefinition ) { return true; } diff --git a/packages/eslint-plugin/src/util/misc.ts b/packages/eslint-plugin/src/util/misc.ts index 2e6c4711cb0d..c4be246edc72 100644 --- a/packages/eslint-plugin/src/util/misc.ts +++ b/packages/eslint-plugin/src/util/misc.ts @@ -66,15 +66,15 @@ function getNameFromIndexSignature(node: TSESTree.TSIndexSignature): string { /** * Gets a string name representation of the name of the given MethodDefinition - * or ClassProperty node, with handling for computed property names. + * or PropertyDefinition node, with handling for computed property names. */ function getNameFromMember( member: | TSESTree.MethodDefinition | TSESTree.TSMethodSignature | TSESTree.TSAbstractMethodDefinition - | TSESTree.ClassProperty - | TSESTree.TSAbstractClassProperty + | TSESTree.PropertyDefinition + | TSESTree.TSAbstractPropertyDefinition | TSESTree.Property | TSESTree.TSPropertySignature, sourceCode: TSESLint.SourceCode, diff --git a/packages/eslint-plugin/tests/rules/indent/indent.test.ts b/packages/eslint-plugin/tests/rules/indent/indent.test.ts index 8296bf19520c..9cb3efd385fa 100644 --- a/packages/eslint-plugin/tests/rules/indent/indent.test.ts +++ b/packages/eslint-plugin/tests/rules/indent/indent.test.ts @@ -39,7 +39,7 @@ abstract class Foo { ], }, { - node: AST_NODE_TYPES.TSAbstractClassProperty, + node: AST_NODE_TYPES.TSAbstractPropertyDefinition, code: [ ` class Foo { diff --git a/packages/eslint-plugin/tests/rules/quotes.test.ts b/packages/eslint-plugin/tests/rules/quotes.test.ts index 847e27e81f52..b0c0ef5099d7 100644 --- a/packages/eslint-plugin/tests/rules/quotes.test.ts +++ b/packages/eslint-plugin/tests/rules/quotes.test.ts @@ -426,7 +426,7 @@ interface Foo { options: ['backtick'], }, - // ClassProperty + // PropertyDefinition { code: ` class Foo { @@ -454,7 +454,7 @@ class Foo { options: ['backtick'], }, - // TSAbstractClassProperty + // TSAbstractPropertyDefinition { code: ` abstract class Foo { @@ -954,7 +954,7 @@ interface Foo { options: ['single'], }, - // ClassProperty + // PropertyDefinition { code: ` class Foo { @@ -1046,7 +1046,7 @@ class Foo { options: ['backtick'], }, - // TSAbstractClassProperty + // TSAbstractPropertyDefinition { code: ` abstract class Foo { diff --git a/packages/experimental-utils/src/ast-utils/predicates.ts b/packages/experimental-utils/src/ast-utils/predicates.ts index bf62a6f77cb2..805f1ed4c2ab 100644 --- a/packages/experimental-utils/src/ast-utils/predicates.ts +++ b/packages/experimental-utils/src/ast-utils/predicates.ts @@ -148,10 +148,10 @@ function isClassOrTypeElement( return [ // ClassElement - AST_NODE_TYPES.ClassProperty, + AST_NODE_TYPES.PropertyDefinition, AST_NODE_TYPES.FunctionExpression, AST_NODE_TYPES.MethodDefinition, - AST_NODE_TYPES.TSAbstractClassProperty, + AST_NODE_TYPES.TSAbstractPropertyDefinition, AST_NODE_TYPES.TSAbstractMethodDefinition, AST_NODE_TYPES.TSEmptyBodyFunctionExpression, AST_NODE_TYPES.TSIndexSignature, diff --git a/packages/experimental-utils/src/ts-eslint/Rule.ts b/packages/experimental-utils/src/ts-eslint/Rule.ts index d74af833121e..f99ccc81bccc 100644 --- a/packages/experimental-utils/src/ts-eslint/Rule.ts +++ b/packages/experimental-utils/src/ts-eslint/Rule.ts @@ -262,7 +262,7 @@ interface RuleListener { ClassBody?: RuleFunction; ClassDeclaration?: RuleFunction; ClassExpression?: RuleFunction; - ClassProperty?: RuleFunction; + PropertyDefinition?: RuleFunction; Comment?: RuleFunction; ConditionalExpression?: RuleFunction; ContinueStatement?: RuleFunction; @@ -326,7 +326,7 @@ interface RuleListener { ThrowStatement?: RuleFunction; Token?: RuleFunction; TryStatement?: RuleFunction; - TSAbstractClassProperty?: RuleFunction; + TSAbstractPropertyDefinition?: RuleFunction; TSAbstractKeyword?: RuleFunction; TSAbstractMethodDefinition?: RuleFunction; TSAnyKeyword?: RuleFunction; diff --git a/packages/scope-manager/src/referencer/ClassVisitor.ts b/packages/scope-manager/src/referencer/ClassVisitor.ts index fff575831910..83d01f7f9d1b 100644 --- a/packages/scope-manager/src/referencer/ClassVisitor.ts +++ b/packages/scope-manager/src/referencer/ClassVisitor.ts @@ -81,7 +81,7 @@ class ClassVisitor extends Visitor { } protected visitClassProperty( - node: TSESTree.TSAbstractClassProperty | TSESTree.ClassProperty, + node: TSESTree.TSAbstractPropertyDefinition | TSESTree.PropertyDefinition, ): void { this.visitProperty(node); /** @@ -229,8 +229,8 @@ class ClassVisitor extends Visitor { protected visitProperty( node: - | TSESTree.ClassProperty - | TSESTree.TSAbstractClassProperty + | TSESTree.PropertyDefinition + | TSESTree.TSAbstractPropertyDefinition | TSESTree.TSAbstractMethodDefinition, ): void { if (node.computed) { @@ -318,7 +318,7 @@ class ClassVisitor extends Visitor { this.visitChildren(node); } - protected ClassProperty(node: TSESTree.ClassProperty): void { + protected PropertyDefinition(node: TSESTree.PropertyDefinition): void { this.visitClassProperty(node); } @@ -326,8 +326,8 @@ class ClassVisitor extends Visitor { this.visitMethod(node); } - protected TSAbstractClassProperty( - node: TSESTree.TSAbstractClassProperty, + protected TSAbstractPropertyDefinition( + node: TSESTree.TSAbstractPropertyDefinition, ): void { this.visitClassProperty(node); } diff --git a/packages/types/src/ast-node-types.ts b/packages/types/src/ast-node-types.ts index 97c630d94727..11036e322d5d 100644 --- a/packages/types/src/ast-node-types.ts +++ b/packages/types/src/ast-node-types.ts @@ -14,7 +14,6 @@ enum AST_NODE_TYPES { ClassBody = 'ClassBody', ClassDeclaration = 'ClassDeclaration', ClassExpression = 'ClassExpression', - ClassProperty = 'ClassProperty', ConditionalExpression = 'ConditionalExpression', ContinueStatement = 'ContinueStatement', DebuggerStatement = 'DebuggerStatement', @@ -63,6 +62,7 @@ enum AST_NODE_TYPES { ObjectPattern = 'ObjectPattern', Program = 'Program', Property = 'Property', + PropertyDefinition = 'PropertyDefinition', RestElement = 'RestElement', ReturnStatement = 'ReturnStatement', SequenceExpression = 'SequenceExpression', @@ -86,9 +86,9 @@ enum AST_NODE_TYPES { /** * TS-prefixed nodes */ - TSAbstractClassProperty = 'TSAbstractClassProperty', TSAbstractKeyword = 'TSAbstractKeyword', TSAbstractMethodDefinition = 'TSAbstractMethodDefinition', + TSAbstractPropertyDefinition = 'TSAbstractPropertyDefinition', TSAnyKeyword = 'TSAnyKeyword', TSArrayType = 'TSArrayType', TSAsExpression = 'TSAsExpression', diff --git a/packages/types/src/ts-estree.ts b/packages/types/src/ts-estree.ts index 4dd89c962bef..32cb1b49f02b 100644 --- a/packages/types/src/ts-estree.ts +++ b/packages/types/src/ts-estree.ts @@ -155,7 +155,7 @@ export type Node = | ClassBody | ClassDeclaration | ClassExpression - | ClassProperty + | PropertyDefinition | ConditionalExpression | ContinueStatement | DebuggerStatement @@ -217,7 +217,7 @@ export type Node = | ThisExpression | ThrowStatement | TryStatement - | TSAbstractClassProperty + | TSAbstractPropertyDefinition | TSAbstractKeyword | TSAbstractMethodDefinition | TSAnyKeyword @@ -314,14 +314,14 @@ export type ChainElement = | MemberExpression | TSNonNullExpression; export type ClassElement = - | ClassProperty + | PropertyDefinition | MethodDefinition - | TSAbstractClassProperty + | TSAbstractPropertyDefinition | TSAbstractMethodDefinition | TSIndexSignature; -export type ClassProperty = - | ClassPropertyComputedName - | ClassPropertyNonComputedName; +export type PropertyDefinition = + | PropertyDefinitionComputedName + | PropertyDefinitionNonComputedName; export type DeclarationStatement = | ClassDeclaration | ClassExpression @@ -504,9 +504,9 @@ export type Statement = | TryStatement | VariableDeclaration | WithStatement; -export type TSAbstractClassProperty = - | TSAbstractClassPropertyComputedName - | TSAbstractClassPropertyNonComputedName; +export type TSAbstractPropertyDefinition = + | TSAbstractPropertyDefinitionComputedName + | TSAbstractPropertyDefinitionNonComputedName; export type TSAbstractMethodDefinition = | TSAbstractMethodDefinitionComputedName | TSAbstractMethodDefinitionNonComputedName; @@ -599,8 +599,8 @@ interface ClassDeclarationBase extends BaseNode { decorators?: Decorator[]; } -/** this should not be directly used - instead use ClassPropertyComputedNameBase or ClassPropertyNonComputedNameBase */ -interface ClassPropertyBase extends BaseNode { +/** this should not be directly used - instead use PropertyDefinitionComputedNameBase or PropertyDefinitionNonComputedNameBase */ +interface PropertyDefinitionBase extends BaseNode { key: PropertyName; value: Expression | null; computed: boolean; @@ -614,12 +614,12 @@ interface ClassPropertyBase extends BaseNode { typeAnnotation?: TSTypeAnnotation; } -interface ClassPropertyComputedNameBase extends ClassPropertyBase { +interface PropertyDefinitionComputedNameBase extends PropertyDefinitionBase { key: PropertyNameComputed; computed: true; } -interface ClassPropertyNonComputedNameBase extends ClassPropertyBase { +interface PropertyDefinitionNonComputedNameBase extends PropertyDefinitionBase { key: PropertyNameNonComputed; computed: false; } @@ -873,14 +873,14 @@ export interface ClassExpression extends ClassDeclarationBase { type: AST_NODE_TYPES.ClassExpression; } -export interface ClassPropertyComputedName - extends ClassPropertyComputedNameBase { - type: AST_NODE_TYPES.ClassProperty; +export interface PropertyDefinitionComputedName + extends PropertyDefinitionComputedNameBase { + type: AST_NODE_TYPES.PropertyDefinition; } -export interface ClassPropertyNonComputedName - extends ClassPropertyNonComputedNameBase { - type: AST_NODE_TYPES.ClassProperty; +export interface PropertyDefinitionNonComputedName + extends PropertyDefinitionNonComputedNameBase { + type: AST_NODE_TYPES.PropertyDefinition; } export interface ConditionalExpression extends BaseNode { @@ -1272,14 +1272,14 @@ export interface TryStatement extends BaseNode { finalizer: BlockStatement; } -export interface TSAbstractClassPropertyComputedName - extends ClassPropertyComputedNameBase { - type: AST_NODE_TYPES.TSAbstractClassProperty; +export interface TSAbstractPropertyDefinitionComputedName + extends PropertyDefinitionComputedNameBase { + type: AST_NODE_TYPES.TSAbstractPropertyDefinition; } -export interface TSAbstractClassPropertyNonComputedName - extends ClassPropertyNonComputedNameBase { - type: AST_NODE_TYPES.TSAbstractClassProperty; +export interface TSAbstractPropertyDefinitionNonComputedName + extends PropertyDefinitionNonComputedNameBase { + type: AST_NODE_TYPES.TSAbstractPropertyDefinition; } export interface TSAbstractKeyword extends BaseNode { diff --git a/packages/typescript-estree/src/convert.ts b/packages/typescript-estree/src/convert.ts index f8819a33c9e3..cd1216936886 100644 --- a/packages/typescript-estree/src/convert.ts +++ b/packages/typescript-estree/src/convert.ts @@ -1002,11 +1002,11 @@ export class Converter { case SyntaxKind.PropertyDeclaration: { const isAbstract = hasModifier(SyntaxKind.AbstractKeyword, node); const result = this.createNode< - TSESTree.TSAbstractClassProperty | TSESTree.ClassProperty + TSESTree.TSAbstractPropertyDefinition | TSESTree.PropertyDefinition >(node, { type: isAbstract - ? AST_NODE_TYPES.TSAbstractClassProperty - : AST_NODE_TYPES.ClassProperty, + ? AST_NODE_TYPES.TSAbstractPropertyDefinition + : AST_NODE_TYPES.PropertyDefinition, key: this.convertChild(node.name), value: this.convertChild(node.initializer), computed: isComputedProperty(node.name), 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 620539202805..26a774e2335d 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 @@ -28,7 +28,7 @@ export interface EstreeToTsNodeTypes { [AST_NODE_TYPES.ClassBody]: ts.ClassDeclaration | ts.ClassExpression; [AST_NODE_TYPES.ClassDeclaration]: ts.ClassDeclaration; [AST_NODE_TYPES.ClassExpression]: ts.ClassExpression; - [AST_NODE_TYPES.ClassProperty]: ts.PropertyDeclaration; + [AST_NODE_TYPES.PropertyDefinition]: ts.PropertyDeclaration; [AST_NODE_TYPES.ConditionalExpression]: ts.ConditionalExpression; [AST_NODE_TYPES.ContinueStatement]: ts.ContinueStatement; [AST_NODE_TYPES.DebuggerStatement]: ts.DebuggerStatement; @@ -149,7 +149,7 @@ export interface EstreeToTsNodeTypes { [AST_NODE_TYPES.ThisExpression]: ts.ThisExpression | ts.KeywordTypeNode; [AST_NODE_TYPES.ThrowStatement]: ts.ThrowStatement; [AST_NODE_TYPES.TryStatement]: ts.TryStatement; - [AST_NODE_TYPES.TSAbstractClassProperty]: ts.PropertyDeclaration; + [AST_NODE_TYPES.TSAbstractPropertyDefinition]: ts.PropertyDeclaration; [AST_NODE_TYPES.TSAbstractMethodDefinition]: | ts.GetAccessorDeclaration | ts.SetAccessorDeclaration diff --git a/packages/typescript-estree/tests/ast-alignment/utils.ts b/packages/typescript-estree/tests/ast-alignment/utils.ts index a2c1d6f87f93..581acf907d56 100644 --- a/packages/typescript-estree/tests/ast-alignment/utils.ts +++ b/packages/typescript-estree/tests/ast-alignment/utils.ts @@ -159,7 +159,7 @@ export function preprocessBabylonAST(ast: BabelTypes.File): any { MethodDefinition(node) { /** * Babel: MethodDefinition + abstract: true - * ts-estree: TSAbstractClassProperty + * ts-estree: TSAbstractPropertyDefinition */ if (node.abstract) { node.type = AST_NODE_TYPES.TSAbstractMethodDefinition; @@ -168,11 +168,11 @@ export function preprocessBabylonAST(ast: BabelTypes.File): any { }, ClassProperty(node) { /** - * Babel: ClassProperty + abstract: true - * ts-estree: TSAbstractClassProperty + * Babel: PropertyDefinition + abstract: true + * ts-estree: TSAbstractPropertyDefinition */ if (node.abstract) { - node.type = AST_NODE_TYPES.TSAbstractClassProperty; + node.type = AST_NODE_TYPES.TSAbstractPropertyDefinition; delete node.abstract; } /** diff --git a/packages/typescript-estree/tests/lib/semanticInfo.test.ts b/packages/typescript-estree/tests/lib/semanticInfo.test.ts index 36726ac1d528..4632d5bee0ca 100644 --- a/packages/typescript-estree/tests/lib/semanticInfo.test.ts +++ b/packages/typescript-estree/tests/lib/semanticInfo.test.ts @@ -158,7 +158,7 @@ describe('semanticInfo', () => { const computedPropertyString = ((parseResult.ast .body[1] as TSESTree.ClassDeclaration).body - .body[0] as TSESTree.ClassProperty).key; + .body[0] as TSESTree.PropertyDefinition).key; const tsComputedPropertyString = parseResult.services.esTreeNodeToTSNodeMap.get( computedPropertyString, ); diff --git a/packages/visitor-keys/src/visitor-keys.ts b/packages/visitor-keys/src/visitor-keys.ts index 68c6b806bcc6..19e6b01ea925 100644 --- a/packages/visitor-keys/src/visitor-keys.ts +++ b/packages/visitor-keys/src/visitor-keys.ts @@ -58,11 +58,16 @@ const additionalKeys: AdditionalKeys = { JSXSpreadChild: ['expression'], // Additional Nodes. - ClassProperty: ['decorators', 'key', 'typeAnnotation', 'value'], + PropertyDefinition: ['decorators', 'key', 'typeAnnotation', 'value'], Decorator: ['expression'], // TS-prefixed nodes - TSAbstractClassProperty: ['decorators', 'key', 'typeAnnotation', 'value'], + TSAbstractPropertyDefinition: [ + 'decorators', + 'key', + 'typeAnnotation', + 'value', + ], TSAbstractKeyword: [], TSAbstractMethodDefinition: ['key', 'value'], TSAnyKeyword: [], From d5e114d9f624760e42831cce68a04331ef0a41b6 Mon Sep 17 00:00:00 2001 From: Armano Date: Fri, 19 Feb 2021 21:57:46 +0100 Subject: [PATCH 2/4] test(typescript-estree): update test snapshots --- .../__snapshots__/semanticInfo.test.ts.snap | 2 +- ...-class-with-abstract-properties.src.ts.shot | 4 ++-- ...with-abstract-readonly-property.src.ts.shot | 2 +- ...t-class-with-declare-properties.src.ts.shot | 10 +++++----- ...ss-with-accessibility-modifiers.src.ts.shot | 4 ++-- .../class-with-declare-properties.src.ts.shot | 14 +++++++------- .../class-with-definite-assignment.src.ts.shot | 2 +- ...with-optional-computed-property.src.ts.shot | 2 +- .../class-with-optional-properties.src.ts.shot | 18 +++++++++--------- ...ith-optional-property-undefined.src.ts.shot | 2 +- .../class-with-property-function.src.ts.shot | 4 ++-- .../class-with-property-values.src.ts.shot | 10 +++++----- .../class-with-readonly-property.src.ts.shot | 2 +- .../object-with-escaped-properties.src.ts.shot | 2 +- .../type-assertion-in-method.src.ts.shot | 2 +- ...-assertion-with-guard-in-method.src.ts.shot | 2 +- .../basics/type-guard-in-method.src.ts.shot | 2 +- .../basics/type-reference-comments.src.ts.shot | 2 +- ...corator-factory-instance-member.src.ts.shot | 4 ++-- ...decorator-factory-static-member.src.ts.shot | 4 ++-- ...perty-decorator-instance-member.src.ts.shot | 4 ++-- ...roperty-decorator-static-member.src.ts.shot | 4 ++-- .../types/this-type-expanded.src.ts.shot | 2 +- 23 files changed, 52 insertions(+), 52 deletions(-) diff --git a/packages/typescript-estree/tests/lib/__snapshots__/semanticInfo.test.ts.snap b/packages/typescript-estree/tests/lib/__snapshots__/semanticInfo.test.ts.snap index c826bde0fbaa..acb66196c84f 100644 --- a/packages/typescript-estree/tests/lib/__snapshots__/semanticInfo.test.ts.snap +++ b/packages/typescript-estree/tests/lib/__snapshots__/semanticInfo.test.ts.snap @@ -1291,7 +1291,7 @@ Object { 56, ], "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "typeAnnotation": Object { "loc": Object { "end": Object { diff --git a/packages/typescript-estree/tests/snapshots/typescript/basics/abstract-class-with-abstract-properties.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/basics/abstract-class-with-abstract-properties.src.ts.shot index 866a63383cb9..1a5a08554c61 100644 --- a/packages/typescript-estree/tests/snapshots/typescript/basics/abstract-class-with-abstract-properties.src.ts.shot +++ b/packages/typescript-estree/tests/snapshots/typescript/basics/abstract-class-with-abstract-properties.src.ts.shot @@ -44,7 +44,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "TSAbstractClassProperty", + "type": "TSAbstractPropertyDefinition", "value": null, }, Object { @@ -84,7 +84,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "TSAbstractClassProperty", + "type": "TSAbstractPropertyDefinition", "value": Object { "loc": Object { "end": Object { diff --git a/packages/typescript-estree/tests/snapshots/typescript/basics/abstract-class-with-abstract-readonly-property.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/basics/abstract-class-with-abstract-readonly-property.src.ts.shot index d33336454ef4..4781437ebd1e 100644 --- a/packages/typescript-estree/tests/snapshots/typescript/basics/abstract-class-with-abstract-readonly-property.src.ts.shot +++ b/packages/typescript-estree/tests/snapshots/typescript/basics/abstract-class-with-abstract-readonly-property.src.ts.shot @@ -45,7 +45,7 @@ Object { ], "readonly": true, "static": false, - "type": "TSAbstractClassProperty", + "type": "TSAbstractPropertyDefinition", "value": Object { "loc": Object { "end": Object { diff --git a/packages/typescript-estree/tests/snapshots/typescript/basics/abstract-class-with-declare-properties.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/basics/abstract-class-with-declare-properties.src.ts.shot index 0bdd47c223eb..a669d7f47ed6 100644 --- a/packages/typescript-estree/tests/snapshots/typescript/basics/abstract-class-with-declare-properties.src.ts.shot +++ b/packages/typescript-estree/tests/snapshots/typescript/basics/abstract-class-with-declare-properties.src.ts.shot @@ -44,7 +44,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "typeAnnotation": Object { "loc": Object { "end": Object { @@ -118,7 +118,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "TSAbstractClassProperty", + "type": "TSAbstractPropertyDefinition", "typeAnnotation": Object { "loc": Object { "end": Object { @@ -193,7 +193,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "TSAbstractClassProperty", + "type": "TSAbstractPropertyDefinition", "typeAnnotation": Object { "loc": Object { "end": Object { @@ -267,7 +267,7 @@ Object { ], "readonly": true, "static": false, - "type": "TSAbstractClassProperty", + "type": "TSAbstractPropertyDefinition", "typeAnnotation": Object { "loc": Object { "end": Object { @@ -342,7 +342,7 @@ Object { ], "readonly": true, "static": false, - "type": "TSAbstractClassProperty", + "type": "TSAbstractPropertyDefinition", "typeAnnotation": Object { "loc": Object { "end": Object { diff --git a/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-accessibility-modifiers.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-accessibility-modifiers.src.ts.shot index c2e78c3d5fc3..54f694167234 100644 --- a/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-accessibility-modifiers.src.ts.shot +++ b/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-accessibility-modifiers.src.ts.shot @@ -44,7 +44,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "typeAnnotation": Object { "loc": Object { "end": Object { @@ -119,7 +119,7 @@ Object { ], "readonly": undefined, "static": true, - "type": "ClassProperty", + "type": "PropertyDefinition", "typeAnnotation": Object { "loc": Object { "end": Object { diff --git a/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-declare-properties.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-declare-properties.src.ts.shot index 3fc4fa8a2887..d9009ab15913 100644 --- a/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-declare-properties.src.ts.shot +++ b/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-declare-properties.src.ts.shot @@ -43,7 +43,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "typeAnnotation": Object { "loc": Object { "end": Object { @@ -118,7 +118,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "typeAnnotation": Object { "loc": Object { "end": Object { @@ -192,7 +192,7 @@ Object { ], "readonly": undefined, "static": true, - "type": "ClassProperty", + "type": "PropertyDefinition", "typeAnnotation": Object { "loc": Object { "end": Object { @@ -266,7 +266,7 @@ Object { ], "readonly": true, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "typeAnnotation": Object { "loc": Object { "end": Object { @@ -341,7 +341,7 @@ Object { ], "readonly": true, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "typeAnnotation": Object { "loc": Object { "end": Object { @@ -416,7 +416,7 @@ Object { ], "readonly": undefined, "static": true, - "type": "ClassProperty", + "type": "PropertyDefinition", "typeAnnotation": Object { "loc": Object { "end": Object { @@ -491,7 +491,7 @@ Object { ], "readonly": true, "static": true, - "type": "ClassProperty", + "type": "PropertyDefinition", "typeAnnotation": Object { "loc": Object { "end": Object { diff --git a/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-definite-assignment.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-definite-assignment.src.ts.shot index 175efb44864f..bf9955315157 100644 --- a/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-definite-assignment.src.ts.shot +++ b/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-definite-assignment.src.ts.shot @@ -44,7 +44,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "typeAnnotation": Object { "loc": Object { "end": Object { diff --git a/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-optional-computed-property.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-optional-computed-property.src.ts.shot index 6271f111aee6..779ffdcb5495 100644 --- a/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-optional-computed-property.src.ts.shot +++ b/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-optional-computed-property.src.ts.shot @@ -46,7 +46,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "value": Object { "loc": Object { "end": Object { diff --git a/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-optional-properties.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-optional-properties.src.ts.shot index 17ec5f652f82..939f59c54ffb 100644 --- a/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-optional-properties.src.ts.shot +++ b/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-optional-properties.src.ts.shot @@ -192,7 +192,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "value": null, }, Object { @@ -233,7 +233,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "typeAnnotation": Object { "loc": Object { "end": Object { @@ -309,7 +309,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "typeAnnotation": Object { "loc": Object { "end": Object { @@ -384,7 +384,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "value": null, }, Object { @@ -426,7 +426,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "value": null, }, Object { @@ -468,7 +468,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "value": null, }, Object { @@ -509,7 +509,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "typeAnnotation": Object { "loc": Object { "end": Object { @@ -585,7 +585,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "typeAnnotation": Object { "loc": Object { "end": Object { @@ -661,7 +661,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "typeAnnotation": Object { "loc": Object { "end": Object { diff --git a/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-optional-property-undefined.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-optional-property-undefined.src.ts.shot index 2476b7468c66..c88a33ac5b3a 100644 --- a/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-optional-property-undefined.src.ts.shot +++ b/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-optional-property-undefined.src.ts.shot @@ -45,7 +45,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "value": Object { "loc": Object { "end": Object { diff --git a/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-property-function.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-property-function.src.ts.shot index 595df343e1d0..6e10a80958f4 100644 --- a/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-property-function.src.ts.shot +++ b/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-property-function.src.ts.shot @@ -43,7 +43,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "typeAnnotation": Object { "loc": Object { "end": Object { @@ -226,7 +226,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "typeAnnotation": Object { "loc": Object { "end": Object { diff --git a/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-property-values.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-property-values.src.ts.shot index a8ed19456ca1..8c01c15f19b2 100644 --- a/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-property-values.src.ts.shot +++ b/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-property-values.src.ts.shot @@ -43,7 +43,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "value": Object { "loc": Object { "end": Object { @@ -101,7 +101,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "value": Object { "loc": Object { "end": Object { @@ -158,7 +158,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "value": Object { "elements": Array [], "loc": Object { @@ -215,7 +215,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "value": Object { "loc": Object { "end": Object { @@ -273,7 +273,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "value": Object { "arguments": Array [ Object { diff --git a/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-readonly-property.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-readonly-property.src.ts.shot index 492e45c6ed15..96a7c59f05eb 100644 --- a/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-readonly-property.src.ts.shot +++ b/packages/typescript-estree/tests/snapshots/typescript/basics/class-with-readonly-property.src.ts.shot @@ -44,7 +44,7 @@ Object { ], "readonly": true, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "value": Object { "loc": Object { "end": Object { diff --git a/packages/typescript-estree/tests/snapshots/typescript/basics/object-with-escaped-properties.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/basics/object-with-escaped-properties.src.ts.shot index 1bf761bae134..b52ccd2cb73b 100644 --- a/packages/typescript-estree/tests/snapshots/typescript/basics/object-with-escaped-properties.src.ts.shot +++ b/packages/typescript-estree/tests/snapshots/typescript/basics/object-with-escaped-properties.src.ts.shot @@ -350,7 +350,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "value": Object { "loc": Object { "end": Object { diff --git a/packages/typescript-estree/tests/snapshots/typescript/basics/type-assertion-in-method.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/basics/type-assertion-in-method.src.ts.shot index c48954cc2b5f..807a4ff2395c 100644 --- a/packages/typescript-estree/tests/snapshots/typescript/basics/type-assertion-in-method.src.ts.shot +++ b/packages/typescript-estree/tests/snapshots/typescript/basics/type-assertion-in-method.src.ts.shot @@ -193,7 +193,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "value": Object { "async": false, "body": Object { diff --git a/packages/typescript-estree/tests/snapshots/typescript/basics/type-assertion-with-guard-in-method.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/basics/type-assertion-with-guard-in-method.src.ts.shot index 64d58b576c30..d7372cfe85bf 100644 --- a/packages/typescript-estree/tests/snapshots/typescript/basics/type-assertion-with-guard-in-method.src.ts.shot +++ b/packages/typescript-estree/tests/snapshots/typescript/basics/type-assertion-with-guard-in-method.src.ts.shot @@ -226,7 +226,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "value": Object { "async": false, "body": Object { diff --git a/packages/typescript-estree/tests/snapshots/typescript/basics/type-guard-in-method.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/basics/type-guard-in-method.src.ts.shot index d8cef033d200..322487408a2d 100644 --- a/packages/typescript-estree/tests/snapshots/typescript/basics/type-guard-in-method.src.ts.shot +++ b/packages/typescript-estree/tests/snapshots/typescript/basics/type-guard-in-method.src.ts.shot @@ -278,7 +278,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "value": Object { "async": false, "body": Object { diff --git a/packages/typescript-estree/tests/snapshots/typescript/basics/type-reference-comments.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/basics/type-reference-comments.src.ts.shot index 80034787fcbe..781b9ee90716 100644 --- a/packages/typescript-estree/tests/snapshots/typescript/basics/type-reference-comments.src.ts.shot +++ b/packages/typescript-estree/tests/snapshots/typescript/basics/type-reference-comments.src.ts.shot @@ -43,7 +43,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "typeAnnotation": Object { "loc": Object { "end": Object { diff --git a/packages/typescript-estree/tests/snapshots/typescript/decorators/property-decorators/property-decorator-factory-instance-member.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/decorators/property-decorators/property-decorator-factory-instance-member.src.ts.shot index 1b372fff159b..aa9c7356f6b7 100644 --- a/packages/typescript-estree/tests/snapshots/typescript/decorators/property-decorators/property-decorator-factory-instance-member.src.ts.shot +++ b/packages/typescript-estree/tests/snapshots/typescript/decorators/property-decorators/property-decorator-factory-instance-member.src.ts.shot @@ -99,7 +99,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "value": null, }, Object { @@ -195,7 +195,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "value": Object { "arguments": Array [], "callee": Object { diff --git a/packages/typescript-estree/tests/snapshots/typescript/decorators/property-decorators/property-decorator-factory-static-member.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/decorators/property-decorators/property-decorator-factory-static-member.src.ts.shot index 6b252b1c09d2..e9a93c4cd071 100644 --- a/packages/typescript-estree/tests/snapshots/typescript/decorators/property-decorators/property-decorator-factory-static-member.src.ts.shot +++ b/packages/typescript-estree/tests/snapshots/typescript/decorators/property-decorators/property-decorator-factory-static-member.src.ts.shot @@ -119,7 +119,7 @@ Object { ], "readonly": undefined, "static": true, - "type": "ClassProperty", + "type": "PropertyDefinition", "value": null, }, Object { @@ -235,7 +235,7 @@ Object { ], "readonly": undefined, "static": true, - "type": "ClassProperty", + "type": "PropertyDefinition", "value": null, }, ], diff --git a/packages/typescript-estree/tests/snapshots/typescript/decorators/property-decorators/property-decorator-instance-member.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/decorators/property-decorators/property-decorator-instance-member.src.ts.shot index ba40f39773e9..5e46a8d8be2f 100644 --- a/packages/typescript-estree/tests/snapshots/typescript/decorators/property-decorators/property-decorator-instance-member.src.ts.shot +++ b/packages/typescript-estree/tests/snapshots/typescript/decorators/property-decorators/property-decorator-instance-member.src.ts.shot @@ -80,7 +80,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "value": null, }, Object { @@ -157,7 +157,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "value": null, }, ], diff --git a/packages/typescript-estree/tests/snapshots/typescript/decorators/property-decorators/property-decorator-static-member.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/decorators/property-decorators/property-decorator-static-member.src.ts.shot index 5a73d6a5bb2e..2010261fe19d 100644 --- a/packages/typescript-estree/tests/snapshots/typescript/decorators/property-decorators/property-decorator-static-member.src.ts.shot +++ b/packages/typescript-estree/tests/snapshots/typescript/decorators/property-decorators/property-decorator-static-member.src.ts.shot @@ -80,7 +80,7 @@ Object { ], "readonly": undefined, "static": true, - "type": "ClassProperty", + "type": "PropertyDefinition", "value": null, }, Object { @@ -157,7 +157,7 @@ Object { ], "readonly": undefined, "static": true, - "type": "ClassProperty", + "type": "PropertyDefinition", "value": null, }, ], diff --git a/packages/typescript-estree/tests/snapshots/typescript/types/this-type-expanded.src.ts.shot b/packages/typescript-estree/tests/snapshots/typescript/types/this-type-expanded.src.ts.shot index 4ae46a1f6155..9a4a3ff8dcaf 100644 --- a/packages/typescript-estree/tests/snapshots/typescript/types/this-type-expanded.src.ts.shot +++ b/packages/typescript-estree/tests/snapshots/typescript/types/this-type-expanded.src.ts.shot @@ -44,7 +44,7 @@ Object { ], "readonly": undefined, "static": false, - "type": "ClassProperty", + "type": "PropertyDefinition", "typeAnnotation": Object { "loc": Object { "end": Object { From 628cd7bff7703586b5e416d89b343b21608f14a2 Mon Sep 17 00:00:00 2001 From: Armano Date: Fri, 19 Feb 2021 21:58:31 +0100 Subject: [PATCH 3/4] test(typescript-estree): update babel alignment tests --- packages/typescript-estree/tests/ast-alignment/utils.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/typescript-estree/tests/ast-alignment/utils.ts b/packages/typescript-estree/tests/ast-alignment/utils.ts index 581acf907d56..00a5d6b88496 100644 --- a/packages/typescript-estree/tests/ast-alignment/utils.ts +++ b/packages/typescript-estree/tests/ast-alignment/utils.ts @@ -159,7 +159,7 @@ export function preprocessBabylonAST(ast: BabelTypes.File): any { MethodDefinition(node) { /** * Babel: MethodDefinition + abstract: true - * ts-estree: TSAbstractPropertyDefinition + * ts-estree: TSAbstractMethodDefinition */ if (node.abstract) { node.type = AST_NODE_TYPES.TSAbstractMethodDefinition; @@ -174,6 +174,11 @@ export function preprocessBabylonAST(ast: BabelTypes.File): any { if (node.abstract) { node.type = AST_NODE_TYPES.TSAbstractPropertyDefinition; delete node.abstract; + } else { + /** + * @see https://github.com/babel/babel/pull/12370 + */ + node.type = AST_NODE_TYPES.PropertyDefinition; } /** * TS 3.7: declare class properties From 56c30dcdbaf3db390b3b02d34ecef5ec19294d5a Mon Sep 17 00:00:00 2001 From: Armano Date: Fri, 19 Feb 2021 21:59:26 +0100 Subject: [PATCH 4/4] fix: correct sorting visitor-keys --- packages/visitor-keys/src/visitor-keys.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/visitor-keys/src/visitor-keys.ts b/packages/visitor-keys/src/visitor-keys.ts index 19e6b01ea925..08a89cd074ad 100644 --- a/packages/visitor-keys/src/visitor-keys.ts +++ b/packages/visitor-keys/src/visitor-keys.ts @@ -62,14 +62,14 @@ const additionalKeys: AdditionalKeys = { Decorator: ['expression'], // TS-prefixed nodes + TSAbstractKeyword: [], + TSAbstractMethodDefinition: ['key', 'value'], TSAbstractPropertyDefinition: [ 'decorators', 'key', 'typeAnnotation', 'value', ], - TSAbstractKeyword: [], - TSAbstractMethodDefinition: ['key', 'value'], TSAnyKeyword: [], TSArrayType: ['elementType'], TSAsExpression: ['expression', 'typeAnnotation'],