diff --git a/packages/ast-spec/src/base/MethodDefinitionBase.ts b/packages/ast-spec/src/base/MethodDefinitionBase.ts index f1f2087ccae..8aaa1c297e5 100644 --- a/packages/ast-spec/src/base/MethodDefinitionBase.ts +++ b/packages/ast-spec/src/base/MethodDefinitionBase.ts @@ -1,7 +1,6 @@ import type { FunctionExpression } from '../expression/FunctionExpression/spec'; import type { TSEmptyBodyFunctionExpression } from '../expression/TSEmptyBodyFunctionExpression/spec'; import type { Decorator } from '../special/Decorator/spec'; -import type { TSTypeParameterDeclaration } from '../special/TSTypeParameterDeclaration/spec'; import type { ClassPropertyNameNonComputed, PropertyName, @@ -21,7 +20,6 @@ interface MethodDefinitionBase extends BaseNode { optional?: boolean; decorators?: Decorator[]; accessibility?: Accessibility; - typeParameters?: TSTypeParameterDeclaration; override?: boolean; } diff --git a/packages/ast-spec/src/element/TSIndexSignature/spec.ts b/packages/ast-spec/src/element/TSIndexSignature/spec.ts index 38002bec295..0e102d1b02c 100644 --- a/packages/ast-spec/src/element/TSIndexSignature/spec.ts +++ b/packages/ast-spec/src/element/TSIndexSignature/spec.ts @@ -10,6 +10,5 @@ export interface TSIndexSignature extends BaseNode { typeAnnotation?: TSTypeAnnotation; readonly?: boolean; accessibility?: Accessibility; - export?: boolean; static?: boolean; } diff --git a/packages/ast-spec/src/element/TSMethodSignature/spec.ts b/packages/ast-spec/src/element/TSMethodSignature/spec.ts index 5ca7cbead3e..545733ca944 100644 --- a/packages/ast-spec/src/element/TSMethodSignature/spec.ts +++ b/packages/ast-spec/src/element/TSMethodSignature/spec.ts @@ -20,7 +20,6 @@ interface TSMethodSignatureBase extends BaseNode { readonly?: boolean; typeParameters?: TSTypeParameterDeclaration; accessibility?: Accessibility; - export?: boolean; static?: boolean; kind: 'get' | 'method' | 'set'; } diff --git a/packages/ast-spec/src/element/TSPropertySignature/spec.ts b/packages/ast-spec/src/element/TSPropertySignature/spec.ts index a3f91ac2680..793e479939e 100644 --- a/packages/ast-spec/src/element/TSPropertySignature/spec.ts +++ b/packages/ast-spec/src/element/TSPropertySignature/spec.ts @@ -2,7 +2,6 @@ import type { AST_NODE_TYPES } from '../../ast-node-types'; import type { Accessibility } from '../../base/Accessibility'; import type { BaseNode } from '../../base/BaseNode'; import type { TSTypeAnnotation } from '../../special/TSTypeAnnotation/spec'; -import type { Expression } from '../../unions/Expression'; import type { PropertyName, PropertyNameComputed, @@ -15,10 +14,8 @@ interface TSPropertySignatureBase extends BaseNode { optional?: boolean; computed: boolean; typeAnnotation?: TSTypeAnnotation; - initializer?: Expression; readonly?: boolean; static?: boolean; - export?: boolean; accessibility?: Accessibility; } diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/class-with-export-parameter-properties/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/class-with-export-parameter-properties/snapshots/1-TSESTree-Error.shot index 2eb5b884fbe..a5771157fc1 100644 --- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/class-with-export-parameter-properties/snapshots/1-TSESTree-Error.shot +++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/class-with-export-parameter-properties/snapshots/1-TSESTree-Error.shot @@ -1,3 +1,3 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`AST Fixtures legacy-fixtures basics _error_ class-with-export-parameter-properties TSESTree - Error 1`] = `"NO ERROR"`; +exports[`AST Fixtures legacy-fixtures basics _error_ class-with-export-parameter-properties TSESTree - Error 1`] = `[TSError: A parameter cannot have an export modifier.]`; diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/class-with-export-parameter-properties/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/class-with-export-parameter-properties/snapshots/3-Alignment-Error.shot index 1cc73e1213a..08681e3fc52 100644 --- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/class-with-export-parameter-properties/snapshots/3-Alignment-Error.shot +++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/class-with-export-parameter-properties/snapshots/3-Alignment-Error.shot @@ -1,3 +1,3 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`AST Fixtures legacy-fixtures basics _error_ class-with-export-parameter-properties Error Alignment 1`] = `"Babel errored but TSESTree didn't"`; +exports[`AST Fixtures legacy-fixtures basics _error_ class-with-export-parameter-properties Error Alignment 1`] = `"Both errored"`; diff --git a/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-index-signature-export/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-index-signature-export/snapshots/1-TSESTree-Error.shot index 4ed734c0a3d..d84129b6d8f 100644 --- a/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-index-signature-export/snapshots/1-TSESTree-Error.shot +++ b/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-index-signature-export/snapshots/1-TSESTree-Error.shot @@ -1,3 +1,3 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`AST Fixtures legacy-fixtures errorRecovery _error_ interface-index-signature-export TSESTree - Error 1`] = `"NO ERROR"`; +exports[`AST Fixtures legacy-fixtures errorRecovery _error_ interface-index-signature-export TSESTree - Error 1`] = `[TSError: An index signature cannot have an export modifier.]`; diff --git a/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-index-signature-export/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-index-signature-export/snapshots/3-Alignment-Error.shot index 36d9f4ef037..984bdc81d29 100644 --- a/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-index-signature-export/snapshots/3-Alignment-Error.shot +++ b/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-index-signature-export/snapshots/3-Alignment-Error.shot @@ -1,3 +1,3 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`AST Fixtures legacy-fixtures errorRecovery _error_ interface-index-signature-export Error Alignment 1`] = `"Babel errored but TSESTree didn't"`; +exports[`AST Fixtures legacy-fixtures errorRecovery _error_ interface-index-signature-export Error Alignment 1`] = `"Both errored"`; diff --git a/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-method-export/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-method-export/snapshots/1-TSESTree-Error.shot index 9bffb118f21..5897c243c82 100644 --- a/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-method-export/snapshots/1-TSESTree-Error.shot +++ b/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-method-export/snapshots/1-TSESTree-Error.shot @@ -1,3 +1,3 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`AST Fixtures legacy-fixtures errorRecovery _error_ interface-method-export TSESTree - Error 1`] = `"NO ERROR"`; +exports[`AST Fixtures legacy-fixtures errorRecovery _error_ interface-method-export TSESTree - Error 1`] = `[TSError: A method signature cannot have an export modifier.]`; diff --git a/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-method-export/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-method-export/snapshots/3-Alignment-Error.shot index 60a90127afa..6ea8f9cb251 100644 --- a/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-method-export/snapshots/3-Alignment-Error.shot +++ b/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-method-export/snapshots/3-Alignment-Error.shot @@ -1,3 +1,3 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`AST Fixtures legacy-fixtures errorRecovery _error_ interface-method-export Error Alignment 1`] = `"Babel errored but TSESTree didn't"`; +exports[`AST Fixtures legacy-fixtures errorRecovery _error_ interface-method-export Error Alignment 1`] = `"Both errored"`; diff --git a/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-property-export/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-property-export/snapshots/1-TSESTree-Error.shot index cd7457e4890..c61919f2a6f 100644 --- a/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-property-export/snapshots/1-TSESTree-Error.shot +++ b/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-property-export/snapshots/1-TSESTree-Error.shot @@ -1,3 +1,3 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`AST Fixtures legacy-fixtures errorRecovery _error_ interface-property-export TSESTree - Error 1`] = `"NO ERROR"`; +exports[`AST Fixtures legacy-fixtures errorRecovery _error_ interface-property-export TSESTree - Error 1`] = `[TSError: A property signature cannot have an export modifier.]`; diff --git a/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-property-export/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-property-export/snapshots/3-Alignment-Error.shot index 62a5bb60065..f62e1bd6555 100644 --- a/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-property-export/snapshots/3-Alignment-Error.shot +++ b/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-property-export/snapshots/3-Alignment-Error.shot @@ -1,3 +1,3 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`AST Fixtures legacy-fixtures errorRecovery _error_ interface-property-export Error Alignment 1`] = `"Babel errored but TSESTree didn't"`; +exports[`AST Fixtures legacy-fixtures errorRecovery _error_ interface-property-export Error Alignment 1`] = `"Both errored"`; diff --git a/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-property-with-default-value/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-property-with-default-value/snapshots/1-TSESTree-Error.shot index 2833ac9eb8f..e218386e43e 100644 --- a/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-property-with-default-value/snapshots/1-TSESTree-Error.shot +++ b/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-property-with-default-value/snapshots/1-TSESTree-Error.shot @@ -1,3 +1,3 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`AST Fixtures legacy-fixtures errorRecovery _error_ interface-property-with-default-value TSESTree - Error 1`] = `"NO ERROR"`; +exports[`AST Fixtures legacy-fixtures errorRecovery _error_ interface-property-with-default-value TSESTree - Error 1`] = `[TSError: A property signature cannot have an initializer.]`; diff --git a/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-property-with-default-value/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-property-with-default-value/snapshots/3-Alignment-Error.shot index 7b334875fc2..19cbad977fb 100644 --- a/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-property-with-default-value/snapshots/3-Alignment-Error.shot +++ b/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/interface-property-with-default-value/snapshots/3-Alignment-Error.shot @@ -1,3 +1,3 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`AST Fixtures legacy-fixtures errorRecovery _error_ interface-property-with-default-value Error Alignment 1`] = `"Babel errored but TSESTree didn't"`; +exports[`AST Fixtures legacy-fixtures errorRecovery _error_ interface-property-with-default-value Error Alignment 1`] = `"Both errored"`; diff --git a/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/object-assertion-not-allowed/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/object-assertion-not-allowed/snapshots/1-TSESTree-Error.shot index 099a62b2b6e..120f6a7564f 100644 --- a/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/object-assertion-not-allowed/snapshots/1-TSESTree-Error.shot +++ b/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/object-assertion-not-allowed/snapshots/1-TSESTree-Error.shot @@ -1,3 +1,3 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`AST Fixtures legacy-fixtures errorRecovery _error_ object-assertion-not-allowed TSESTree - Error 1`] = `"NO ERROR"`; +exports[`AST Fixtures legacy-fixtures errorRecovery _error_ object-assertion-not-allowed TSESTree - Error 1`] = `[TSError: A shorthand property assignment cannot have an exclamation token.]`; diff --git a/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/object-assertion-not-allowed/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/object-assertion-not-allowed/snapshots/3-Alignment-Error.shot index 2b47812c46c..878ae2828d2 100644 --- a/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/object-assertion-not-allowed/snapshots/3-Alignment-Error.shot +++ b/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/object-assertion-not-allowed/snapshots/3-Alignment-Error.shot @@ -1,3 +1,3 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`AST Fixtures legacy-fixtures errorRecovery _error_ object-assertion-not-allowed Error Alignment 1`] = `"Babel errored but TSESTree didn't"`; +exports[`AST Fixtures legacy-fixtures errorRecovery _error_ object-assertion-not-allowed Error Alignment 1`] = `"Both errored"`; diff --git a/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/object-optional-not-allowed/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/object-optional-not-allowed/snapshots/1-TSESTree-Error.shot index 5f118120b57..358de70e95c 100644 --- a/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/object-optional-not-allowed/snapshots/1-TSESTree-Error.shot +++ b/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/object-optional-not-allowed/snapshots/1-TSESTree-Error.shot @@ -1,3 +1,3 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`AST Fixtures legacy-fixtures errorRecovery _error_ object-optional-not-allowed TSESTree - Error 1`] = `"NO ERROR"`; +exports[`AST Fixtures legacy-fixtures errorRecovery _error_ object-optional-not-allowed TSESTree - Error 1`] = `[TSError: A shorthand property assignment cannot have a question token.]`; diff --git a/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/object-optional-not-allowed/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/object-optional-not-allowed/snapshots/3-Alignment-Error.shot index 31aaad026ea..8579fdd31e6 100644 --- a/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/object-optional-not-allowed/snapshots/3-Alignment-Error.shot +++ b/packages/ast-spec/src/legacy-fixtures/errorRecovery/fixtures/_error_/object-optional-not-allowed/snapshots/3-Alignment-Error.shot @@ -1,3 +1,3 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`AST Fixtures legacy-fixtures errorRecovery _error_ object-optional-not-allowed Error Alignment 1`] = `"Babel errored but TSESTree didn't"`; +exports[`AST Fixtures legacy-fixtures errorRecovery _error_ object-optional-not-allowed Error Alignment 1`] = `"Both errored"`; diff --git a/packages/ast-spec/src/parameter/TSParameterProperty/spec.ts b/packages/ast-spec/src/parameter/TSParameterProperty/spec.ts index 0cf3c4a911d..68e025b0fb7 100644 --- a/packages/ast-spec/src/parameter/TSParameterProperty/spec.ts +++ b/packages/ast-spec/src/parameter/TSParameterProperty/spec.ts @@ -11,7 +11,6 @@ export interface TSParameterProperty extends BaseNode { accessibility?: Accessibility; readonly?: boolean; static?: boolean; - export?: boolean; override?: boolean; parameter: AssignmentPattern | BindingName | RestElement; decorators?: Decorator[]; diff --git a/packages/ast-spec/tests/fixtures-with-differences-errors.shot b/packages/ast-spec/tests/fixtures-with-differences-errors.shot index b57d165dd07..97a476e7196 100644 --- a/packages/ast-spec/tests/fixtures-with-differences-errors.shot +++ b/packages/ast-spec/tests/fixtures-with-differences-errors.shot @@ -28,7 +28,6 @@ Object { "legacy-fixtures/basics/fixtures/_error_/await-without-async-function/fixture.ts", "legacy-fixtures/basics/fixtures/_error_/class-private-identifier-field-with-accessibility-error/fixture.ts", "legacy-fixtures/basics/fixtures/_error_/class-with-constructor-and-type-parameters/fixture.ts", - "legacy-fixtures/basics/fixtures/_error_/class-with-export-parameter-properties/fixture.ts", "legacy-fixtures/basics/fixtures/_error_/class-with-implements-and-extends/fixture.ts", "legacy-fixtures/basics/fixtures/_error_/class-with-static-parameter-properties/fixture.ts", "legacy-fixtures/basics/fixtures/_error_/class-with-two-methods-computed-constructor/fixture.ts", @@ -63,27 +62,21 @@ Object { "legacy-fixtures/errorRecovery/fixtures/_error_/index-signature-parameters/fixture.ts", "legacy-fixtures/errorRecovery/fixtures/_error_/interface-empty-extends/fixture.ts", "legacy-fixtures/errorRecovery/fixtures/_error_/interface-implements/fixture.ts", - "legacy-fixtures/errorRecovery/fixtures/_error_/interface-index-signature-export/fixture.ts", "legacy-fixtures/errorRecovery/fixtures/_error_/interface-index-signature-private/fixture.ts", "legacy-fixtures/errorRecovery/fixtures/_error_/interface-index-signature-protected/fixture.ts", "legacy-fixtures/errorRecovery/fixtures/_error_/interface-index-signature-public/fixture.ts", "legacy-fixtures/errorRecovery/fixtures/_error_/interface-index-signature-static/fixture.ts", - "legacy-fixtures/errorRecovery/fixtures/_error_/interface-method-export/fixture.ts", "legacy-fixtures/errorRecovery/fixtures/_error_/interface-method-private/fixture.ts", "legacy-fixtures/errorRecovery/fixtures/_error_/interface-method-protected/fixture.ts", "legacy-fixtures/errorRecovery/fixtures/_error_/interface-method-public/fixture.ts", "legacy-fixtures/errorRecovery/fixtures/_error_/interface-method-readonly/fixture.ts", "legacy-fixtures/errorRecovery/fixtures/_error_/interface-method-static/fixture.ts", "legacy-fixtures/errorRecovery/fixtures/_error_/interface-multiple-extends/fixture.ts", - "legacy-fixtures/errorRecovery/fixtures/_error_/interface-property-export/fixture.ts", "legacy-fixtures/errorRecovery/fixtures/_error_/interface-property-private/fixture.ts", "legacy-fixtures/errorRecovery/fixtures/_error_/interface-property-protected/fixture.ts", "legacy-fixtures/errorRecovery/fixtures/_error_/interface-property-public/fixture.ts", "legacy-fixtures/errorRecovery/fixtures/_error_/interface-property-static/fixture.ts", - "legacy-fixtures/errorRecovery/fixtures/_error_/interface-property-with-default-value/fixture.ts", "legacy-fixtures/errorRecovery/fixtures/_error_/interface-with-optional-index-signature/fixture.ts", - "legacy-fixtures/errorRecovery/fixtures/_error_/object-assertion-not-allowed/fixture.ts", - "legacy-fixtures/errorRecovery/fixtures/_error_/object-optional-not-allowed/fixture.ts", "legacy-fixtures/errorRecovery/fixtures/_error_/solo-const/fixture.ts", "legacy-fixtures/parameter-decorators/fixtures/_error_/parameter-array-pattern-decorator/fixture.ts", "legacy-fixtures/parameter-decorators/fixtures/_error_/parameter-rest-element-decorator/fixture.ts", diff --git a/packages/typescript-estree/src/convert.ts b/packages/typescript-estree/src/convert.ts index 10d1b262495..7d14d25cc9a 100644 --- a/packages/typescript-estree/src/convert.ts +++ b/packages/typescript-estree/src/convert.ts @@ -662,7 +662,11 @@ export class Converter { } if (hasModifier(SyntaxKind.ExportKeyword, node)) { - result.export = true; + throw createError( + this.ast, + node.pos, + 'A method signature cannot have an export modifier.', + ); } if (hasModifier(SyntaxKind.StaticKeyword, node)) { @@ -1047,6 +1051,20 @@ export class Converter { } case SyntaxKind.PropertyAssignment: + this.#throwErrorIfDeprecatedPropertyExists( + node, + // eslint-disable-next-line deprecation/deprecation + node.questionToken, + 'A property assignment cannot have a question token.', + ); + + this.#throwErrorIfDeprecatedPropertyExists( + node, + // eslint-disable-next-line deprecation/deprecation + node.exclamationToken, + 'A property assignment cannot have an exclamation token.', + ); + return this.createNode(node, { type: AST_NODE_TYPES.Property, key: this.convertChild(node.name), @@ -1058,6 +1076,27 @@ export class Converter { }); case SyntaxKind.ShorthandPropertyAssignment: { + this.#throwErrorIfDeprecatedPropertyExists( + node, + // eslint-disable-next-line deprecation/deprecation + node.modifiers, + 'A shorthand property assignment cannot have modifiers.', + ); + + this.#throwErrorIfDeprecatedPropertyExists( + node, + // eslint-disable-next-line deprecation/deprecation + node.questionToken, + 'A shorthand property assignment cannot have a question token.', + ); + + this.#throwErrorIfDeprecatedPropertyExists( + node, + // eslint-disable-next-line deprecation/deprecation + node.exclamationToken, + 'A shorthand property assignment cannot have an exclamation token.', + ); + if (node.objectAssignmentInitializer) { return this.createNode(node, { type: AST_NODE_TYPES.Property, @@ -1609,13 +1648,20 @@ export class Converter { const modifiers = getModifiers(node); if (modifiers) { + if (hasModifier(SyntaxKind.ExportKeyword, node)) { + throw createError( + this.ast, + node.pos, + 'A parameter cannot have an export modifier.', + ); + } + return this.createNode(node, { type: AST_NODE_TYPES.TSParameterProperty, accessibility: getTSNodeAccessibility(node) ?? undefined, readonly: hasModifier(SyntaxKind.ReadonlyKeyword, node) || undefined, static: hasModifier(SyntaxKind.StaticKeyword, node) || undefined, - export: hasModifier(SyntaxKind.ExportKeyword, node) || undefined, override: hasModifier(SyntaxKind.OverrideKeyword, node) || undefined, parameter: result, @@ -2458,6 +2504,21 @@ export class Converter { } case SyntaxKind.PropertySignature: { + this.#throwErrorIfDeprecatedPropertyExists( + node, + // eslint-disable-next-line deprecation/deprecation + node.initializer, + 'A property signature cannot have an initializer.', + ); + + if (hasModifier(SyntaxKind.ExportKeyword, node)) { + throw createError( + this.ast, + node.pos, + 'A property signature cannot have an export modifier.', + ); + } + const result = this.createNode(node, { type: AST_NODE_TYPES.TSPropertySignature, optional: isOptional(node) || undefined, @@ -2466,14 +2527,8 @@ export class Converter { typeAnnotation: node.type ? this.convertTypeAnnotation(node.type, node) : undefined, - initializer: - this.convertChild( - // eslint-disable-next-line deprecation/deprecation -- TODO breaking change remove this from the AST - node.initializer, - ) || undefined, readonly: hasModifier(SyntaxKind.ReadonlyKeyword, node) || undefined, static: hasModifier(SyntaxKind.StaticKeyword, node) || undefined, - export: hasModifier(SyntaxKind.ExportKeyword, node) || undefined, }); const accessibility = getTSNodeAccessibility(node); @@ -2504,7 +2559,11 @@ export class Converter { } if (hasModifier(SyntaxKind.ExportKeyword, node)) { - result.export = true; + throw createError( + this.ast, + node.pos, + 'An index signature cannot have an export modifier.', + ); } if (hasModifier(SyntaxKind.StaticKeyword, node)) { @@ -2531,6 +2590,13 @@ export class Converter { } case SyntaxKind.FunctionType: + this.#throwErrorIfDeprecatedPropertyExists( + node, + // eslint-disable-next-line deprecation/deprecation + node.modifiers, + 'A function type cannot have modifiers.', + ); + // intentional fallthrough case SyntaxKind.ConstructSignature: case SyntaxKind.CallSignature: { const type = @@ -2959,4 +3025,14 @@ export class Converter { return this.deeplyCopy(node); } } + + #throwErrorIfDeprecatedPropertyExists( + node: Node, + property: unknown, + message: string, + ): void { + if (property) { + throw createError(this.ast, node.pos, message); + } + } } diff --git a/packages/visitor-keys/src/visitor-keys.ts b/packages/visitor-keys/src/visitor-keys.ts index 1952d67f2ce..b20b9c4396d 100644 --- a/packages/visitor-keys/src/visitor-keys.ts +++ b/packages/visitor-keys/src/visitor-keys.ts @@ -170,7 +170,7 @@ const additionalKeys: AdditionalKeys = { JSXOpeningElement: ['name', 'typeParameters', 'attributes'], JSXOpeningFragment: [], JSXSpreadChild: ['expression'], - MethodDefinition: ['decorators', 'key', 'value', 'typeParameters'], + MethodDefinition: ['decorators', 'key', 'value'], NewExpression: ['callee', 'typeParameters', 'arguments'], ObjectPattern: ['decorators', 'properties', 'typeAnnotation'], PropertyDefinition: SharedVisitorKeys.PropertyDefinition, @@ -227,7 +227,7 @@ const additionalKeys: AdditionalKeys = { TSOptionalType: ['typeAnnotation'], TSParameterProperty: ['decorators', 'parameter'], TSPrivateKeyword: [], - TSPropertySignature: ['typeAnnotation', 'key', 'initializer'], + TSPropertySignature: ['typeAnnotation', 'key'], TSProtectedKeyword: [], TSPublicKeyword: [], TSQualifiedName: ['left', 'right'],