From 69246b6212732ee4ed157ff31a8d3275dc8d70ff Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Tue, 11 Jan 2022 01:35:03 +0900 Subject: [PATCH] [babel 8] fix properties name for function-like TS nodes (#13709) * Align AST * Add tests for parser * Generator * Add babel-types support * Address review * Address review --- .../src/generators/typescript.ts | 20 ++- .../src/plugins/typescript/index.js | 31 ++-- packages/babel-parser/src/types.js | 5 + .../pattern-parameters-babel-7/input.ts | 5 + .../pattern-parameters-babel-7/options.json | 3 + .../pattern-parameters-babel-7/output.json | 141 ++++++++++++++++++ .../declare/pattern-parameters/options.json | 3 + .../declare/pattern-parameters/output.json | 12 +- .../interface/call-signature-babel-7/input.ts | 3 + .../call-signature-babel-7/options.json | 3 + .../call-signature-babel-7/output.json | 55 +++++++ .../interface/call-signature/options.json | 3 + .../interface/call-signature/output.json | 4 +- .../construct-signature-babel-7/input.ts | 3 + .../construct-signature-babel-7/options.json | 3 + .../construct-signature-babel-7/output.json | 55 +++++++ .../construct-signature/options.json | 3 + .../interface/construct-signature/output.json | 4 +- .../interface/function-like-node-1/input.ts | 3 + .../function-like-node-1/options.json | 3 + .../function-like-node-1/output.json | 70 +++++++++ .../interface/function-like-node-2/input.ts | 1 + .../function-like-node-2/options.json | 3 + .../function-like-node-2/output.json | 50 +++++++ .../interface/function-like-node-3/input.ts | 1 + .../function-like-node-3/options.json | 3 + .../function-like-node-3/output.json | 51 +++++++ .../interface/function-like-node-4/input.ts | 3 + .../function-like-node-4/options.json | 3 + .../function-like-node-4/output.json | 70 +++++++++ .../interface/function-like-node-5/input.ts | 3 + .../function-like-node-5/options.json | 3 + .../function-like-node-5/output.json | 77 ++++++++++ .../get-set-ambiguous-babel-7/input.ts | 6 + .../get-set-ambiguous-babel-7/options.json | 3 + .../get-set-ambiguous-babel-7/output.json | 86 +++++++++++ .../interface/get-set-ambiguous/options.json | 3 + .../interface/get-set-ambiguous/output.json | 6 +- .../interface/get-set-babel-7/input.ts | 4 + .../interface/get-set-babel-7/options.json | 3 + .../interface/get-set-babel-7/output.json | 66 ++++++++ .../input.ts | 3 + .../options.json | 3 + .../output.json | 58 +++++++ .../options.json | 3 + .../output.json | 2 +- .../input.ts | 4 + .../options.json | 3 + .../output.json | 70 +++++++++ .../get-set-invalid-parameters/options.json | 3 + .../get-set-invalid-parameters/output.json | 6 +- .../input.ts | 3 + .../options.json | 3 + .../output.json | 53 +++++++ .../options.json | 3 + .../output.json | 2 +- .../input.ts | 3 + .../options.json | 3 + .../output.json | 57 +++++++ .../get-set-invalid-return-types/options.json | 3 + .../get-set-invalid-return-types/output.json | 4 +- .../input.ts | 4 + .../options.json | 3 + .../output.json | 95 ++++++++++++ .../options.json | 3 + .../output.json | 4 +- .../get-set-methods-babel-7/input.ts | 4 + .../get-set-methods-babel-7/options.json | 3 + .../get-set-methods-babel-7/output.json | 68 +++++++++ .../interface/get-set-methods/options.json | 3 + .../interface/get-set-methods/output.json | 8 +- .../get-set-type-parameters/output.json | 6 +- .../typescript/interface/get-set/options.json | 3 + .../typescript/interface/get-set/output.json | 6 +- .../invalid-modifiers-method-babel-7/input.ts | 9 ++ .../options.json | 3 + .../output.json | 128 ++++++++++++++++ .../invalid-modifiers-method/options.json | 3 + .../invalid-modifiers-method/output.json | 14 +- .../method-computed-babel-7/input.ts | 4 + .../method-computed-babel-7/options.json | 3 + .../method-computed-babel-7/output.json | 89 +++++++++++ .../interface/method-computed/options.json | 3 + .../interface/method-computed/output.json | 8 +- .../interface/method-generic/output.json | 4 +- .../method-optional-babel-7/input.ts | 3 + .../method-optional-babel-7/options.json | 3 + .../method-optional-babel-7/output.json | 49 ++++++ .../interface/method-optional/options.json | 3 + .../interface/method-optional/output.json | 4 +- .../interface/method-plain-babel-7/input.ts | 4 + .../method-plain-babel-7/options.json | 3 + .../method-plain-babel-7/output.json | 96 ++++++++++++ .../interface/method-plain/options.json | 3 + .../interface/method-plain/output.json | 6 +- .../pattern-parameters-babel-7/input.ts | 5 + .../pattern-parameters-babel-7/options.json | 3 + .../pattern-parameters-babel-7/output.json | 140 +++++++++++++++++ .../interface/pattern-parameters/options.json | 3 + .../interface/pattern-parameters/output.json | 12 +- .../reserved-method-name-babel-7/input.ts | 3 + .../reserved-method-name-babel-7/options.json | 3 + .../reserved-method-name-babel-7/output.json | 48 ++++++ .../reserved-method-name/options.json | 3 + .../reserved-method-name/output.json | 4 +- .../input.ts | 3 + .../options.json | 3 + .../output.json | 112 ++++++++++++++ .../options.json | 3 + .../output.json | 8 +- .../regression/issue-7742/output.json | 4 +- .../tsx/type-parameters/output.json | 4 +- .../input.ts | 1 + .../options.json | 3 + .../output.json | 52 +++++++ .../options.json | 3 + .../output.json | 4 +- .../constructor-signatures-babel-7/input.ts | 1 + .../options.json | 3 + .../output.json | 52 +++++++ .../types/constructor-signatures/options.json | 3 + .../types/constructor-signatures/output.json | 4 +- .../types/function-babel-7/input.ts | 1 + .../types/function-babel-7/options.json | 3 + .../types/function-babel-7/output.json | 96 ++++++++++++ .../types/function-generic/output.json | 4 +- .../function-in-generic-babel-7/input.ts | 1 + .../function-in-generic-babel-7/options.json | 3 + .../function-in-generic-babel-7/output.json | 62 ++++++++ .../types/function-in-generic/options.json | 3 + .../types/function-in-generic/output.json | 4 +- .../types/function-with-this-babel-7/input.ts | 1 + .../function-with-this-babel-7/options.json | 3 + .../function-with-this-babel-7/output.json | 61 ++++++++ .../types/function-with-this/options.json | 3 + .../types/function-with-this/output.json | 4 +- .../typescript/types/function/options.json | 3 + .../typescript/types/function/output.json | 4 +- .../types/pattern-parameters-babel-7/input.ts | 5 + .../pattern-parameters-babel-7/options.json | 3 + .../pattern-parameters-babel-7/output.json | 140 +++++++++++++++++ .../types/pattern-parameters/options.json | 3 + .../types/pattern-parameters/output.json | 12 +- .../type-literal-get-set-babel-7/input.ts | 4 + .../type-literal-get-set-babel-7/options.json | 3 + .../type-literal-get-set-babel-7/output.json | 78 ++++++++++ .../types/type-literal-get-set/options.json | 3 + .../types/type-literal-get-set/output.json | 6 +- .../babel-types/src/definitions/typescript.ts | 26 +++- packages/babel-types/test/fields.js | 18 +++ 150 files changed, 2757 insertions(+), 105 deletions(-) create mode 100644 packages/babel-parser/test/fixtures/typescript/declare/pattern-parameters-babel-7/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/declare/pattern-parameters-babel-7/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/declare/pattern-parameters-babel-7/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/declare/pattern-parameters/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/call-signature-babel-7/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/call-signature-babel-7/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/call-signature-babel-7/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/call-signature/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/construct-signature-babel-7/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/construct-signature-babel-7/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/construct-signature-babel-7/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/construct-signature/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/function-like-node-1/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/function-like-node-1/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/function-like-node-1/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/function-like-node-2/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/function-like-node-2/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/function-like-node-2/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/function-like-node-3/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/function-like-node-3/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/function-like-node-3/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/function-like-node-4/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/function-like-node-4/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/function-like-node-4/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/function-like-node-5/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/function-like-node-5/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/function-like-node-5/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-ambiguous-babel-7/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-ambiguous-babel-7/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-ambiguous-babel-7/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-ambiguous/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-babel-7/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-babel-7/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-babel-7/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-optional-parameter-babel-7/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-optional-parameter-babel-7/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-optional-parameter-babel-7/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-optional-parameter/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-parameters-babel-7/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-parameters-babel-7/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-parameters-babel-7/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-parameters/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-reset-parameter-babel-7/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-reset-parameter-babel-7/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-reset-parameter-babel-7/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-reset-parameter/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-return-types-babel-7/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-return-types-babel-7/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-return-types-babel-7/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-return-types/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-this-parameters-babel-7/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-this-parameters-babel-7/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-this-parameters-babel-7/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-this-parameters/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-methods-babel-7/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-methods-babel-7/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-methods-babel-7/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set-methods/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/get-set/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/invalid-modifiers-method-babel-7/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/invalid-modifiers-method-babel-7/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/invalid-modifiers-method-babel-7/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/invalid-modifiers-method/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/method-computed-babel-7/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/method-computed-babel-7/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/method-computed-babel-7/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/method-computed/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/method-optional-babel-7/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/method-optional-babel-7/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/method-optional-babel-7/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/method-optional/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/method-plain-babel-7/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/method-plain-babel-7/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/method-plain-babel-7/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/method-plain/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/pattern-parameters-babel-7/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/pattern-parameters-babel-7/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/pattern-parameters-babel-7/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/pattern-parameters/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/reserved-method-name-babel-7/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/reserved-method-name-babel-7/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/reserved-method-name-babel-7/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/interface/reserved-method-name/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/regression/destructuring-in-function-type-babel-7/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/regression/destructuring-in-function-type-babel-7/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/regression/destructuring-in-function-type-babel-7/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/regression/destructuring-in-function-type/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/abstract-constructor-signatures-babel-7/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/types/abstract-constructor-signatures-babel-7/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/abstract-constructor-signatures-babel-7/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/abstract-constructor-signatures/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/constructor-signatures-babel-7/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/types/constructor-signatures-babel-7/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/constructor-signatures-babel-7/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/constructor-signatures/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/function-babel-7/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/types/function-babel-7/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/function-babel-7/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/function-in-generic-babel-7/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/types/function-in-generic-babel-7/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/function-in-generic-babel-7/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/function-in-generic/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/function-with-this-babel-7/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/types/function-with-this-babel-7/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/function-with-this-babel-7/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/function-with-this/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/function/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/pattern-parameters-babel-7/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/types/pattern-parameters-babel-7/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/pattern-parameters-babel-7/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/pattern-parameters/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/type-literal-get-set-babel-7/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/types/type-literal-get-set-babel-7/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/type-literal-get-set-babel-7/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/type-literal-get-set/options.json diff --git a/packages/babel-generator/src/generators/typescript.ts b/packages/babel-generator/src/generators/typescript.ts index 594fe26ba0..bdddbf06fa 100644 --- a/packages/babel-generator/src/generators/typescript.ts +++ b/packages/babel-generator/src/generators/typescript.ts @@ -225,7 +225,10 @@ export function tsPrintFunctionOrConstructorType( // todo: missing type FunctionOrConstructorType node: any, ) { - const { typeParameters, parameters } = node; + const { typeParameters } = node; + const parameters = process.env.BABEL_8_BREAKING + ? node.params + : node.parameters; this.print(typeParameters, node); this.token("("); this._parameters(parameters, node); @@ -233,7 +236,10 @@ export function tsPrintFunctionOrConstructorType( this.space(); this.token("=>"); this.space(); - this.print(node.typeAnnotation.typeAnnotation, node); + const returnType = process.env.BABEL_8_BREAKING + ? node.returnType + : node.typeAnnotation; + this.print(returnType.typeAnnotation, node); } export function TSTypeReference(this: Printer, node: t.TSTypeReference) { @@ -648,12 +654,18 @@ export function TSNamespaceExportDeclaration( } export function tsPrintSignatureDeclarationBase(this: Printer, node: any) { - const { typeParameters, parameters } = node; + const { typeParameters } = node; + const parameters = process.env.BABEL_8_BREAKING + ? node.params + : node.parameters; this.print(typeParameters, node); this.token("("); this._parameters(parameters, node); this.token(")"); - this.print(node.typeAnnotation, node); + const returnType = process.env.BABEL_8_BREAKING + ? node.returnType + : node.typeAnnotation; + this.print(returnType, node); } export function tsPrintClassMemberModifiers(this: Printer, node: any, isField) { diff --git a/packages/babel-parser/src/plugins/typescript/index.js b/packages/babel-parser/src/plugins/typescript/index.js index d07ad1759b..835d24c6c0 100644 --- a/packages/babel-parser/src/plugins/typescript/index.js +++ b/packages/babel-parser/src/plugins/typescript/index.js @@ -584,14 +584,21 @@ export default (superClass: Class): Class => ): void { // Arrow fns *must* have return token (`=>`). Normal functions can omit it. const returnTokenRequired = returnToken === tt.arrow; + + // https://github.com/babel/babel/issues/9231 + const paramsKey = process.env.BABEL_8_BREAKING ? "params" : "parameters"; + const returnTypeKey = process.env.BABEL_8_BREAKING + ? "returnType" + : "typeAnnotation"; + signature.typeParameters = this.tsTryParseTypeParameters(); this.expect(tt.parenL); - signature.parameters = this.tsParseBindingListForSignature(); + signature[paramsKey] = this.tsParseBindingListForSignature(); if (returnTokenRequired) { - signature.typeAnnotation = + signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken); } else if (this.match(returnToken)) { - signature.typeAnnotation = + signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken); } } @@ -683,10 +690,16 @@ export default (superClass: Class): Class => } this.tsFillSignature(tt.colon, method); this.tsParseTypeMemberSemicolon(); + const paramsKey = process.env.BABEL_8_BREAKING + ? "params" + : "parameters"; + const returnTypeKey = process.env.BABEL_8_BREAKING + ? "returnType" + : "typeAnnotation"; if (method.kind === "get") { - if (method.parameters.length > 0) { + if (method[paramsKey].length > 0) { this.raise(this.state.pos, Errors.BadGetterArity); - if (this.isThisParam(method.parameters[0])) { + if (this.isThisParam(method[paramsKey][0])) { this.raise( this.state.pos, TSErrors.AccesorCannotDeclareThisParameter, @@ -694,10 +707,10 @@ export default (superClass: Class): Class => } } } else if (method.kind === "set") { - if (method.parameters.length !== 1) { + if (method[paramsKey].length !== 1) { this.raise(this.state.pos, Errors.BadSetterArity); } else { - const firstParameter = method.parameters[0]; + const firstParameter = method[paramsKey][0]; if (this.isThisParam(firstParameter)) { this.raise( this.state.pos, @@ -720,9 +733,9 @@ export default (superClass: Class): Class => ); } } - if (method.typeAnnotation) { + if (method[returnTypeKey]) { this.raise( - method.typeAnnotation.start, + method[returnTypeKey].start, TSErrors.SetAccesorCannotHaveReturnType, ); } diff --git a/packages/babel-parser/src/types.js b/packages/babel-parser/src/types.js index f967774c78..31c8648681 100644 --- a/packages/babel-parser/src/types.js +++ b/packages/babel-parser/src/types.js @@ -1255,6 +1255,11 @@ export type TsSignatureDeclaration = export type TsSignatureDeclarationOrIndexSignatureBase = NodeBase & { // Not using TypeScript's "ParameterDeclaration" here, since it's inconsistent with regular functions. + params: $ReadOnlyArray< + Identifier | RestElement | ObjectPattern | ArrayPattern, + >, + returnType: ?TsTypeAnnotation, + // TODO(Babel-8): Remove parameters: $ReadOnlyArray< Identifier | RestElement | ObjectPattern | ArrayPattern, >, diff --git a/packages/babel-parser/test/fixtures/typescript/declare/pattern-parameters-babel-7/input.ts b/packages/babel-parser/test/fixtures/typescript/declare/pattern-parameters-babel-7/input.ts new file mode 100644 index 0000000000..6128f99e33 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/declare/pattern-parameters-babel-7/input.ts @@ -0,0 +1,5 @@ +declare interface B { + foo([]?): void; + bar({}, []?): any; + baz(a: string, b: number, []?): void; +} diff --git a/packages/babel-parser/test/fixtures/typescript/declare/pattern-parameters-babel-7/options.json b/packages/babel-parser/test/fixtures/typescript/declare/pattern-parameters-babel-7/options.json new file mode 100644 index 0000000000..29a3f0e841 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/declare/pattern-parameters-babel-7/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": false +} diff --git a/packages/babel-parser/test/fixtures/typescript/declare/pattern-parameters-babel-7/output.json b/packages/babel-parser/test/fixtures/typescript/declare/pattern-parameters-babel-7/output.json new file mode 100644 index 0000000000..5a0f8fbc62 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/declare/pattern-parameters-babel-7/output.json @@ -0,0 +1,141 @@ +{ + "type": "File", + "start":0,"end":102,"loc":{"start":{"line":1,"column":0},"end":{"line":5,"column":1}}, + "program": { + "type": "Program", + "start":0,"end":102,"loc":{"start":{"line":1,"column":0},"end":{"line":5,"column":1}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSInterfaceDeclaration", + "start":0,"end":102,"loc":{"start":{"line":1,"column":0},"end":{"line":5,"column":1}}, + "id": { + "type": "Identifier", + "start":18,"end":19,"loc":{"start":{"line":1,"column":18},"end":{"line":1,"column":19},"identifierName":"B"}, + "name": "B" + }, + "body": { + "type": "TSInterfaceBody", + "start":20,"end":102,"loc":{"start":{"line":1,"column":20},"end":{"line":5,"column":1}}, + "body": [ + { + "type": "TSMethodSignature", + "start":24,"end":39,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":17}}, + "key": { + "type": "Identifier", + "start":24,"end":27,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":5},"identifierName":"foo"}, + "name": "foo" + }, + "computed": false, + "parameters": [ + { + "type": "ArrayPattern", + "start":28,"end":31,"loc":{"start":{"line":2,"column":6},"end":{"line":2,"column":9}}, + "elements": [], + "optional": true + } + ], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":32,"end":38,"loc":{"start":{"line":2,"column":10},"end":{"line":2,"column":16}}, + "typeAnnotation": { + "type": "TSVoidKeyword", + "start":34,"end":38,"loc":{"start":{"line":2,"column":12},"end":{"line":2,"column":16}} + } + }, + "kind": "method" + }, + { + "type": "TSMethodSignature", + "start":42,"end":60,"loc":{"start":{"line":3,"column":2},"end":{"line":3,"column":20}}, + "key": { + "type": "Identifier", + "start":42,"end":45,"loc":{"start":{"line":3,"column":2},"end":{"line":3,"column":5},"identifierName":"bar"}, + "name": "bar" + }, + "computed": false, + "parameters": [ + { + "type": "ObjectPattern", + "start":46,"end":48,"loc":{"start":{"line":3,"column":6},"end":{"line":3,"column":8}}, + "properties": [] + }, + { + "type": "ArrayPattern", + "start":50,"end":53,"loc":{"start":{"line":3,"column":10},"end":{"line":3,"column":13}}, + "elements": [], + "optional": true + } + ], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":54,"end":59,"loc":{"start":{"line":3,"column":14},"end":{"line":3,"column":19}}, + "typeAnnotation": { + "type": "TSAnyKeyword", + "start":56,"end":59,"loc":{"start":{"line":3,"column":16},"end":{"line":3,"column":19}} + } + }, + "kind": "method" + }, + { + "type": "TSMethodSignature", + "start":63,"end":100,"loc":{"start":{"line":4,"column":2},"end":{"line":4,"column":39}}, + "key": { + "type": "Identifier", + "start":63,"end":66,"loc":{"start":{"line":4,"column":2},"end":{"line":4,"column":5},"identifierName":"baz"}, + "name": "baz" + }, + "computed": false, + "parameters": [ + { + "type": "Identifier", + "start":67,"end":76,"loc":{"start":{"line":4,"column":6},"end":{"line":4,"column":15},"identifierName":"a"}, + "name": "a", + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":68,"end":76,"loc":{"start":{"line":4,"column":7},"end":{"line":4,"column":15}}, + "typeAnnotation": { + "type": "TSStringKeyword", + "start":70,"end":76,"loc":{"start":{"line":4,"column":9},"end":{"line":4,"column":15}} + } + } + }, + { + "type": "Identifier", + "start":78,"end":87,"loc":{"start":{"line":4,"column":17},"end":{"line":4,"column":26},"identifierName":"b"}, + "name": "b", + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":79,"end":87,"loc":{"start":{"line":4,"column":18},"end":{"line":4,"column":26}}, + "typeAnnotation": { + "type": "TSNumberKeyword", + "start":81,"end":87,"loc":{"start":{"line":4,"column":20},"end":{"line":4,"column":26}} + } + } + }, + { + "type": "ArrayPattern", + "start":89,"end":92,"loc":{"start":{"line":4,"column":28},"end":{"line":4,"column":31}}, + "elements": [], + "optional": true + } + ], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":93,"end":99,"loc":{"start":{"line":4,"column":32},"end":{"line":4,"column":38}}, + "typeAnnotation": { + "type": "TSVoidKeyword", + "start":95,"end":99,"loc":{"start":{"line":4,"column":34},"end":{"line":4,"column":38}} + } + }, + "kind": "method" + } + ] + }, + "declare": true + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/declare/pattern-parameters/options.json b/packages/babel-parser/test/fixtures/typescript/declare/pattern-parameters/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/declare/pattern-parameters/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/declare/pattern-parameters/output.json b/packages/babel-parser/test/fixtures/typescript/declare/pattern-parameters/output.json index 5a0f8fbc62..fe360a1a85 100644 --- a/packages/babel-parser/test/fixtures/typescript/declare/pattern-parameters/output.json +++ b/packages/babel-parser/test/fixtures/typescript/declare/pattern-parameters/output.json @@ -28,7 +28,7 @@ "name": "foo" }, "computed": false, - "parameters": [ + "params": [ { "type": "ArrayPattern", "start":28,"end":31,"loc":{"start":{"line":2,"column":6},"end":{"line":2,"column":9}}, @@ -36,7 +36,7 @@ "optional": true } ], - "typeAnnotation": { + "returnType": { "type": "TSTypeAnnotation", "start":32,"end":38,"loc":{"start":{"line":2,"column":10},"end":{"line":2,"column":16}}, "typeAnnotation": { @@ -55,7 +55,7 @@ "name": "bar" }, "computed": false, - "parameters": [ + "params": [ { "type": "ObjectPattern", "start":46,"end":48,"loc":{"start":{"line":3,"column":6},"end":{"line":3,"column":8}}, @@ -68,7 +68,7 @@ "optional": true } ], - "typeAnnotation": { + "returnType": { "type": "TSTypeAnnotation", "start":54,"end":59,"loc":{"start":{"line":3,"column":14},"end":{"line":3,"column":19}}, "typeAnnotation": { @@ -87,7 +87,7 @@ "name": "baz" }, "computed": false, - "parameters": [ + "params": [ { "type": "Identifier", "start":67,"end":76,"loc":{"start":{"line":4,"column":6},"end":{"line":4,"column":15},"identifierName":"a"}, @@ -121,7 +121,7 @@ "optional": true } ], - "typeAnnotation": { + "returnType": { "type": "TSTypeAnnotation", "start":93,"end":99,"loc":{"start":{"line":4,"column":32},"end":{"line":4,"column":38}}, "typeAnnotation": { diff --git a/packages/babel-parser/test/fixtures/typescript/interface/call-signature-babel-7/input.ts b/packages/babel-parser/test/fixtures/typescript/interface/call-signature-babel-7/input.ts new file mode 100644 index 0000000000..5d6b541719 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/call-signature-babel-7/input.ts @@ -0,0 +1,3 @@ +interface I { + (x: number): void; +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/call-signature-babel-7/options.json b/packages/babel-parser/test/fixtures/typescript/interface/call-signature-babel-7/options.json new file mode 100644 index 0000000000..29a3f0e841 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/call-signature-babel-7/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": false +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/call-signature-babel-7/output.json b/packages/babel-parser/test/fixtures/typescript/interface/call-signature-babel-7/output.json new file mode 100644 index 0000000000..e08c41659e --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/call-signature-babel-7/output.json @@ -0,0 +1,55 @@ +{ + "type": "File", + "start":0,"end":38,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "program": { + "type": "Program", + "start":0,"end":38,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSInterfaceDeclaration", + "start":0,"end":38,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "id": { + "type": "Identifier", + "start":10,"end":11,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":11},"identifierName":"I"}, + "name": "I" + }, + "body": { + "type": "TSInterfaceBody", + "start":12,"end":38,"loc":{"start":{"line":1,"column":12},"end":{"line":3,"column":1}}, + "body": [ + { + "type": "TSCallSignatureDeclaration", + "start":18,"end":36,"loc":{"start":{"line":2,"column":4},"end":{"line":2,"column":22}}, + "parameters": [ + { + "type": "Identifier", + "start":19,"end":28,"loc":{"start":{"line":2,"column":5},"end":{"line":2,"column":14},"identifierName":"x"}, + "name": "x", + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":20,"end":28,"loc":{"start":{"line":2,"column":6},"end":{"line":2,"column":14}}, + "typeAnnotation": { + "type": "TSNumberKeyword", + "start":22,"end":28,"loc":{"start":{"line":2,"column":8},"end":{"line":2,"column":14}} + } + } + } + ], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":29,"end":35,"loc":{"start":{"line":2,"column":15},"end":{"line":2,"column":21}}, + "typeAnnotation": { + "type": "TSVoidKeyword", + "start":31,"end":35,"loc":{"start":{"line":2,"column":17},"end":{"line":2,"column":21}} + } + } + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/interface/call-signature/options.json b/packages/babel-parser/test/fixtures/typescript/interface/call-signature/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/call-signature/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/call-signature/output.json b/packages/babel-parser/test/fixtures/typescript/interface/call-signature/output.json index e08c41659e..4b820ff318 100644 --- a/packages/babel-parser/test/fixtures/typescript/interface/call-signature/output.json +++ b/packages/babel-parser/test/fixtures/typescript/interface/call-signature/output.json @@ -22,7 +22,7 @@ { "type": "TSCallSignatureDeclaration", "start":18,"end":36,"loc":{"start":{"line":2,"column":4},"end":{"line":2,"column":22}}, - "parameters": [ + "params": [ { "type": "Identifier", "start":19,"end":28,"loc":{"start":{"line":2,"column":5},"end":{"line":2,"column":14},"identifierName":"x"}, @@ -37,7 +37,7 @@ } } ], - "typeAnnotation": { + "returnType": { "type": "TSTypeAnnotation", "start":29,"end":35,"loc":{"start":{"line":2,"column":15},"end":{"line":2,"column":21}}, "typeAnnotation": { diff --git a/packages/babel-parser/test/fixtures/typescript/interface/construct-signature-babel-7/input.ts b/packages/babel-parser/test/fixtures/typescript/interface/construct-signature-babel-7/input.ts new file mode 100644 index 0000000000..d726e4c4ed --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/construct-signature-babel-7/input.ts @@ -0,0 +1,3 @@ +interface I { + new (x: number): void; +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/construct-signature-babel-7/options.json b/packages/babel-parser/test/fixtures/typescript/interface/construct-signature-babel-7/options.json new file mode 100644 index 0000000000..29a3f0e841 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/construct-signature-babel-7/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": false +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/construct-signature-babel-7/output.json b/packages/babel-parser/test/fixtures/typescript/interface/construct-signature-babel-7/output.json new file mode 100644 index 0000000000..00ed1c2cc1 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/construct-signature-babel-7/output.json @@ -0,0 +1,55 @@ +{ + "type": "File", + "start":0,"end":42,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "program": { + "type": "Program", + "start":0,"end":42,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSInterfaceDeclaration", + "start":0,"end":42,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "id": { + "type": "Identifier", + "start":10,"end":11,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":11},"identifierName":"I"}, + "name": "I" + }, + "body": { + "type": "TSInterfaceBody", + "start":12,"end":42,"loc":{"start":{"line":1,"column":12},"end":{"line":3,"column":1}}, + "body": [ + { + "type": "TSConstructSignatureDeclaration", + "start":18,"end":40,"loc":{"start":{"line":2,"column":4},"end":{"line":2,"column":26}}, + "parameters": [ + { + "type": "Identifier", + "start":23,"end":32,"loc":{"start":{"line":2,"column":9},"end":{"line":2,"column":18},"identifierName":"x"}, + "name": "x", + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":24,"end":32,"loc":{"start":{"line":2,"column":10},"end":{"line":2,"column":18}}, + "typeAnnotation": { + "type": "TSNumberKeyword", + "start":26,"end":32,"loc":{"start":{"line":2,"column":12},"end":{"line":2,"column":18}} + } + } + } + ], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":33,"end":39,"loc":{"start":{"line":2,"column":19},"end":{"line":2,"column":25}}, + "typeAnnotation": { + "type": "TSVoidKeyword", + "start":35,"end":39,"loc":{"start":{"line":2,"column":21},"end":{"line":2,"column":25}} + } + } + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/interface/construct-signature/options.json b/packages/babel-parser/test/fixtures/typescript/interface/construct-signature/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/construct-signature/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/construct-signature/output.json b/packages/babel-parser/test/fixtures/typescript/interface/construct-signature/output.json index 00ed1c2cc1..eddca315f5 100644 --- a/packages/babel-parser/test/fixtures/typescript/interface/construct-signature/output.json +++ b/packages/babel-parser/test/fixtures/typescript/interface/construct-signature/output.json @@ -22,7 +22,7 @@ { "type": "TSConstructSignatureDeclaration", "start":18,"end":40,"loc":{"start":{"line":2,"column":4},"end":{"line":2,"column":26}}, - "parameters": [ + "params": [ { "type": "Identifier", "start":23,"end":32,"loc":{"start":{"line":2,"column":9},"end":{"line":2,"column":18},"identifierName":"x"}, @@ -37,7 +37,7 @@ } } ], - "typeAnnotation": { + "returnType": { "type": "TSTypeAnnotation", "start":33,"end":39,"loc":{"start":{"line":2,"column":19},"end":{"line":2,"column":25}}, "typeAnnotation": { diff --git a/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-1/input.ts b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-1/input.ts new file mode 100644 index 0000000000..c437b6992f --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-1/input.ts @@ -0,0 +1,3 @@ +interface Foo { + (a: string): string; +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-1/options.json b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-1/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-1/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-1/output.json b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-1/output.json new file mode 100644 index 0000000000..b4aeef0b58 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-1/output.json @@ -0,0 +1,70 @@ +{ + "type": "File", + "start":0,"end":43,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "program": { + "type": "Program", + "start":0,"end":43,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSInterfaceDeclaration", + "start":0,"end":43,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "id": { + "type": "Identifier", + "start":10,"end":13,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":13},"identifierName":"Foo"}, + "name": "Foo" + }, + "body": { + "type": "TSInterfaceBody", + "start":14,"end":43,"loc":{"start":{"line":1,"column":14},"end":{"line":3,"column":1}}, + "body": [ + { + "type": "TSCallSignatureDeclaration", + "start":18,"end":41,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":25}}, + "typeParameters": { + "type": "TSTypeParameterDeclaration", + "start":18,"end":21,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":5}}, + "params": [ + { + "type": "TSTypeParameter", + "start":19,"end":20,"loc":{"start":{"line":2,"column":3},"end":{"line":2,"column":4}}, + "name": { + "type": "Identifier", + "start":19,"end":20,"loc":{"start":{"line":2,"column":3},"end":{"line":2,"column":4},"identifierName":"T"}, + "name": "T" + } + } + ] + }, + "params": [ + { + "type": "Identifier", + "start":22,"end":31,"loc":{"start":{"line":2,"column":6},"end":{"line":2,"column":15},"identifierName":"a"}, + "name": "a", + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":23,"end":31,"loc":{"start":{"line":2,"column":7},"end":{"line":2,"column":15}}, + "typeAnnotation": { + "type": "TSStringKeyword", + "start":25,"end":31,"loc":{"start":{"line":2,"column":9},"end":{"line":2,"column":15}} + } + } + } + ], + "returnType": { + "type": "TSTypeAnnotation", + "start":32,"end":40,"loc":{"start":{"line":2,"column":16},"end":{"line":2,"column":24}}, + "typeAnnotation": { + "type": "TSStringKeyword", + "start":34,"end":40,"loc":{"start":{"line":2,"column":18},"end":{"line":2,"column":24}} + } + } + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-2/input.ts b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-2/input.ts new file mode 100644 index 0000000000..8c9e7dbbba --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-2/input.ts @@ -0,0 +1 @@ +type Foo = () => number; diff --git a/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-2/options.json b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-2/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-2/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-2/output.json b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-2/output.json new file mode 100644 index 0000000000..e3e29a3509 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-2/output.json @@ -0,0 +1,50 @@ +{ + "type": "File", + "start":0,"end":27,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":27}}, + "program": { + "type": "Program", + "start":0,"end":27,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":27}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSTypeAliasDeclaration", + "start":0,"end":27,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":27}}, + "id": { + "type": "Identifier", + "start":5,"end":8,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":8},"identifierName":"Foo"}, + "name": "Foo" + }, + "typeAnnotation": { + "type": "TSFunctionType", + "start":11,"end":26,"loc":{"start":{"line":1,"column":11},"end":{"line":1,"column":26}}, + "typeParameters": { + "type": "TSTypeParameterDeclaration", + "start":11,"end":14,"loc":{"start":{"line":1,"column":11},"end":{"line":1,"column":14}}, + "params": [ + { + "type": "TSTypeParameter", + "start":12,"end":13,"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":13}}, + "name": { + "type": "Identifier", + "start":12,"end":13,"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":13},"identifierName":"T"}, + "name": "T" + } + } + ] + }, + "params": [], + "returnType": { + "type": "TSTypeAnnotation", + "start":17,"end":26,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":26}}, + "typeAnnotation": { + "type": "TSNumberKeyword", + "start":20,"end":26,"loc":{"start":{"line":1,"column":20},"end":{"line":1,"column":26}} + } + } + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-3/input.ts b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-3/input.ts new file mode 100644 index 0000000000..ffc5771b2e --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-3/input.ts @@ -0,0 +1 @@ +type Foo = new () => void; diff --git a/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-3/options.json b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-3/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-3/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-3/output.json b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-3/output.json new file mode 100644 index 0000000000..c9fe3187ae --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-3/output.json @@ -0,0 +1,51 @@ +{ + "type": "File", + "start":0,"end":29,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":29}}, + "program": { + "type": "Program", + "start":0,"end":29,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":29}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSTypeAliasDeclaration", + "start":0,"end":29,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":29}}, + "id": { + "type": "Identifier", + "start":5,"end":8,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":8},"identifierName":"Foo"}, + "name": "Foo" + }, + "typeAnnotation": { + "type": "TSConstructorType", + "start":11,"end":28,"loc":{"start":{"line":1,"column":11},"end":{"line":1,"column":28}}, + "abstract": false, + "typeParameters": { + "type": "TSTypeParameterDeclaration", + "start":15,"end":18,"loc":{"start":{"line":1,"column":15},"end":{"line":1,"column":18}}, + "params": [ + { + "type": "TSTypeParameter", + "start":16,"end":17,"loc":{"start":{"line":1,"column":16},"end":{"line":1,"column":17}}, + "name": { + "type": "Identifier", + "start":16,"end":17,"loc":{"start":{"line":1,"column":16},"end":{"line":1,"column":17},"identifierName":"T"}, + "name": "T" + } + } + ] + }, + "params": [], + "returnType": { + "type": "TSTypeAnnotation", + "start":21,"end":28,"loc":{"start":{"line":1,"column":21},"end":{"line":1,"column":28}}, + "typeAnnotation": { + "type": "TSVoidKeyword", + "start":24,"end":28,"loc":{"start":{"line":1,"column":24},"end":{"line":1,"column":28}} + } + } + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-4/input.ts b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-4/input.ts new file mode 100644 index 0000000000..ce5217ae10 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-4/input.ts @@ -0,0 +1,3 @@ +interface Foo { + new(a: string): string; +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-4/options.json b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-4/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-4/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-4/output.json b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-4/output.json new file mode 100644 index 0000000000..28e301b018 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-4/output.json @@ -0,0 +1,70 @@ +{ + "type": "File", + "start":0,"end":46,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "program": { + "type": "Program", + "start":0,"end":46,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSInterfaceDeclaration", + "start":0,"end":46,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "id": { + "type": "Identifier", + "start":10,"end":13,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":13},"identifierName":"Foo"}, + "name": "Foo" + }, + "body": { + "type": "TSInterfaceBody", + "start":14,"end":46,"loc":{"start":{"line":1,"column":14},"end":{"line":3,"column":1}}, + "body": [ + { + "type": "TSConstructSignatureDeclaration", + "start":18,"end":44,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":28}}, + "typeParameters": { + "type": "TSTypeParameterDeclaration", + "start":21,"end":24,"loc":{"start":{"line":2,"column":5},"end":{"line":2,"column":8}}, + "params": [ + { + "type": "TSTypeParameter", + "start":22,"end":23,"loc":{"start":{"line":2,"column":6},"end":{"line":2,"column":7}}, + "name": { + "type": "Identifier", + "start":22,"end":23,"loc":{"start":{"line":2,"column":6},"end":{"line":2,"column":7},"identifierName":"T"}, + "name": "T" + } + } + ] + }, + "params": [ + { + "type": "Identifier", + "start":25,"end":34,"loc":{"start":{"line":2,"column":9},"end":{"line":2,"column":18},"identifierName":"a"}, + "name": "a", + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":26,"end":34,"loc":{"start":{"line":2,"column":10},"end":{"line":2,"column":18}}, + "typeAnnotation": { + "type": "TSStringKeyword", + "start":28,"end":34,"loc":{"start":{"line":2,"column":12},"end":{"line":2,"column":18}} + } + } + } + ], + "returnType": { + "type": "TSTypeAnnotation", + "start":35,"end":43,"loc":{"start":{"line":2,"column":19},"end":{"line":2,"column":27}}, + "typeAnnotation": { + "type": "TSStringKeyword", + "start":37,"end":43,"loc":{"start":{"line":2,"column":21},"end":{"line":2,"column":27}} + } + } + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-5/input.ts b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-5/input.ts new file mode 100644 index 0000000000..75620a8167 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-5/input.ts @@ -0,0 +1,3 @@ +interface Foo { + foo(x: number): void; +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-5/options.json b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-5/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-5/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-5/output.json b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-5/output.json new file mode 100644 index 0000000000..25650da545 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/function-like-node-5/output.json @@ -0,0 +1,77 @@ +{ + "type": "File", + "start":0,"end":44,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "program": { + "type": "Program", + "start":0,"end":44,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSInterfaceDeclaration", + "start":0,"end":44,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "id": { + "type": "Identifier", + "start":10,"end":13,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":13},"identifierName":"Foo"}, + "name": "Foo" + }, + "body": { + "type": "TSInterfaceBody", + "start":14,"end":44,"loc":{"start":{"line":1,"column":14},"end":{"line":3,"column":1}}, + "body": [ + { + "type": "TSMethodSignature", + "start":18,"end":42,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":26}}, + "key": { + "type": "Identifier", + "start":18,"end":21,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":5},"identifierName":"foo"}, + "name": "foo" + }, + "computed": false, + "typeParameters": { + "type": "TSTypeParameterDeclaration", + "start":21,"end":24,"loc":{"start":{"line":2,"column":5},"end":{"line":2,"column":8}}, + "params": [ + { + "type": "TSTypeParameter", + "start":22,"end":23,"loc":{"start":{"line":2,"column":6},"end":{"line":2,"column":7}}, + "name": { + "type": "Identifier", + "start":22,"end":23,"loc":{"start":{"line":2,"column":6},"end":{"line":2,"column":7},"identifierName":"T"}, + "name": "T" + } + } + ] + }, + "params": [ + { + "type": "Identifier", + "start":25,"end":34,"loc":{"start":{"line":2,"column":9},"end":{"line":2,"column":18},"identifierName":"x"}, + "name": "x", + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":26,"end":34,"loc":{"start":{"line":2,"column":10},"end":{"line":2,"column":18}}, + "typeAnnotation": { + "type": "TSNumberKeyword", + "start":28,"end":34,"loc":{"start":{"line":2,"column":12},"end":{"line":2,"column":18}} + } + } + } + ], + "returnType": { + "type": "TSTypeAnnotation", + "start":35,"end":41,"loc":{"start":{"line":2,"column":19},"end":{"line":2,"column":25}}, + "typeAnnotation": { + "type": "TSVoidKeyword", + "start":37,"end":41,"loc":{"start":{"line":2,"column":21},"end":{"line":2,"column":25}} + } + }, + "kind": "method" + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-ambiguous-babel-7/input.ts b/packages/babel-parser/test/fixtures/typescript/interface/get-set-ambiguous-babel-7/input.ts new file mode 100644 index 0000000000..8663a711f9 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-ambiguous-babel-7/input.ts @@ -0,0 +1,6 @@ +interface Foo { + get + foo(): string; + set + bar(v); +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-ambiguous-babel-7/options.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-ambiguous-babel-7/options.json new file mode 100644 index 0000000000..29a3f0e841 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-ambiguous-babel-7/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": false +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-ambiguous-babel-7/output.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-ambiguous-babel-7/output.json new file mode 100644 index 0000000000..be21c57f2c --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-ambiguous-babel-7/output.json @@ -0,0 +1,86 @@ +{ + "type": "File", + "start":0,"end":56,"loc":{"start":{"line":1,"column":0},"end":{"line":6,"column":1}}, + "program": { + "type": "Program", + "start":0,"end":56,"loc":{"start":{"line":1,"column":0},"end":{"line":6,"column":1}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSInterfaceDeclaration", + "start":0,"end":56,"loc":{"start":{"line":1,"column":0},"end":{"line":6,"column":1}}, + "id": { + "type": "Identifier", + "start":10,"end":13,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":13},"identifierName":"Foo"}, + "name": "Foo" + }, + "body": { + "type": "TSInterfaceBody", + "start":14,"end":56,"loc":{"start":{"line":1,"column":14},"end":{"line":6,"column":1}}, + "body": [ + { + "type": "TSPropertySignature", + "start":18,"end":21,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":5}}, + "key": { + "type": "Identifier", + "start":18,"end":21,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":5},"identifierName":"get"}, + "name": "get" + }, + "computed": false + }, + { + "type": "TSMethodSignature", + "start":24,"end":38,"loc":{"start":{"line":3,"column":2},"end":{"line":3,"column":16}}, + "key": { + "type": "Identifier", + "start":24,"end":27,"loc":{"start":{"line":3,"column":2},"end":{"line":3,"column":5},"identifierName":"foo"}, + "name": "foo" + }, + "computed": false, + "parameters": [], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":29,"end":37,"loc":{"start":{"line":3,"column":7},"end":{"line":3,"column":15}}, + "typeAnnotation": { + "type": "TSStringKeyword", + "start":31,"end":37,"loc":{"start":{"line":3,"column":9},"end":{"line":3,"column":15}} + } + }, + "kind": "method" + }, + { + "type": "TSPropertySignature", + "start":41,"end":44,"loc":{"start":{"line":4,"column":2},"end":{"line":4,"column":5}}, + "key": { + "type": "Identifier", + "start":41,"end":44,"loc":{"start":{"line":4,"column":2},"end":{"line":4,"column":5},"identifierName":"set"}, + "name": "set" + }, + "computed": false + }, + { + "type": "TSMethodSignature", + "start":47,"end":54,"loc":{"start":{"line":5,"column":2},"end":{"line":5,"column":9}}, + "key": { + "type": "Identifier", + "start":47,"end":50,"loc":{"start":{"line":5,"column":2},"end":{"line":5,"column":5},"identifierName":"bar"}, + "name": "bar" + }, + "computed": false, + "parameters": [ + { + "type": "Identifier", + "start":51,"end":52,"loc":{"start":{"line":5,"column":6},"end":{"line":5,"column":7},"identifierName":"v"}, + "name": "v" + } + ], + "kind": "method" + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-ambiguous/options.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-ambiguous/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-ambiguous/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-ambiguous/output.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-ambiguous/output.json index be21c57f2c..00e676cb6c 100644 --- a/packages/babel-parser/test/fixtures/typescript/interface/get-set-ambiguous/output.json +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-ambiguous/output.json @@ -38,8 +38,8 @@ "name": "foo" }, "computed": false, - "parameters": [], - "typeAnnotation": { + "params": [], + "returnType": { "type": "TSTypeAnnotation", "start":29,"end":37,"loc":{"start":{"line":3,"column":7},"end":{"line":3,"column":15}}, "typeAnnotation": { @@ -68,7 +68,7 @@ "name": "bar" }, "computed": false, - "parameters": [ + "params": [ { "type": "Identifier", "start":51,"end":52,"loc":{"start":{"line":5,"column":6},"end":{"line":5,"column":7},"identifierName":"v"}, diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-babel-7/input.ts b/packages/babel-parser/test/fixtures/typescript/interface/get-set-babel-7/input.ts new file mode 100644 index 0000000000..1d700d78ae --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-babel-7/input.ts @@ -0,0 +1,4 @@ +interface Foo { + get foo(): string; + set bar(v); +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-babel-7/options.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-babel-7/options.json new file mode 100644 index 0000000000..29a3f0e841 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-babel-7/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": false +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-babel-7/output.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-babel-7/output.json new file mode 100644 index 0000000000..fd035cd7cd --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-babel-7/output.json @@ -0,0 +1,66 @@ +{ + "type": "File", + "start":0,"end":52,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":1}}, + "program": { + "type": "Program", + "start":0,"end":52,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":1}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSInterfaceDeclaration", + "start":0,"end":52,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":1}}, + "id": { + "type": "Identifier", + "start":10,"end":13,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":13},"identifierName":"Foo"}, + "name": "Foo" + }, + "body": { + "type": "TSInterfaceBody", + "start":14,"end":52,"loc":{"start":{"line":1,"column":14},"end":{"line":4,"column":1}}, + "body": [ + { + "type": "TSMethodSignature", + "start":18,"end":36,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":20}}, + "kind": "get", + "key": { + "type": "Identifier", + "start":22,"end":25,"loc":{"start":{"line":2,"column":6},"end":{"line":2,"column":9},"identifierName":"foo"}, + "name": "foo" + }, + "computed": false, + "parameters": [], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":27,"end":35,"loc":{"start":{"line":2,"column":11},"end":{"line":2,"column":19}}, + "typeAnnotation": { + "type": "TSStringKeyword", + "start":29,"end":35,"loc":{"start":{"line":2,"column":13},"end":{"line":2,"column":19}} + } + } + }, + { + "type": "TSMethodSignature", + "start":39,"end":50,"loc":{"start":{"line":3,"column":2},"end":{"line":3,"column":13}}, + "kind": "set", + "key": { + "type": "Identifier", + "start":43,"end":46,"loc":{"start":{"line":3,"column":6},"end":{"line":3,"column":9},"identifierName":"bar"}, + "name": "bar" + }, + "computed": false, + "parameters": [ + { + "type": "Identifier", + "start":47,"end":48,"loc":{"start":{"line":3,"column":10},"end":{"line":3,"column":11},"identifierName":"v"}, + "name": "v" + } + ] + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-optional-parameter-babel-7/input.ts b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-optional-parameter-babel-7/input.ts new file mode 100644 index 0000000000..94dab3cd73 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-optional-parameter-babel-7/input.ts @@ -0,0 +1,3 @@ +interface Foo { + set bar(foo?: string); +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-optional-parameter-babel-7/options.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-optional-parameter-babel-7/options.json new file mode 100644 index 0000000000..29a3f0e841 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-optional-parameter-babel-7/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": false +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-optional-parameter-babel-7/output.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-optional-parameter-babel-7/output.json new file mode 100644 index 0000000000..7ceb61f8f9 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-optional-parameter-babel-7/output.json @@ -0,0 +1,58 @@ +{ + "type": "File", + "start":0,"end":42,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "errors": [ + "SyntaxError: A 'set' accessor cannot have an optional parameter. (3:1)" + ], + "program": { + "type": "Program", + "start":0,"end":42,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSInterfaceDeclaration", + "start":0,"end":42,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "id": { + "type": "Identifier", + "start":10,"end":13,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":13},"identifierName":"Foo"}, + "name": "Foo" + }, + "body": { + "type": "TSInterfaceBody", + "start":14,"end":42,"loc":{"start":{"line":1,"column":14},"end":{"line":3,"column":1}}, + "body": [ + { + "type": "TSMethodSignature", + "start":18,"end":40,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":24}}, + "key": { + "type": "Identifier", + "start":22,"end":25,"loc":{"start":{"line":2,"column":6},"end":{"line":2,"column":9},"identifierName":"bar"}, + "name": "bar" + }, + "computed": false, + "kind": "set", + "parameters": [ + { + "type": "Identifier", + "start":26,"end":38,"loc":{"start":{"line":2,"column":10},"end":{"line":2,"column":22},"identifierName":"foo"}, + "name": "foo", + "optional": true, + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":30,"end":38,"loc":{"start":{"line":2,"column":14},"end":{"line":2,"column":22}}, + "typeAnnotation": { + "type": "TSStringKeyword", + "start":32,"end":38,"loc":{"start":{"line":2,"column":16},"end":{"line":2,"column":22}} + } + } + } + ] + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-optional-parameter/options.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-optional-parameter/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-optional-parameter/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-optional-parameter/output.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-optional-parameter/output.json index 7ceb61f8f9..f7b6821d45 100644 --- a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-optional-parameter/output.json +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-optional-parameter/output.json @@ -32,7 +32,7 @@ }, "computed": false, "kind": "set", - "parameters": [ + "params": [ { "type": "Identifier", "start":26,"end":38,"loc":{"start":{"line":2,"column":10},"end":{"line":2,"column":22},"identifierName":"foo"}, diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-parameters-babel-7/input.ts b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-parameters-babel-7/input.ts new file mode 100644 index 0000000000..571a874d30 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-parameters-babel-7/input.ts @@ -0,0 +1,4 @@ +interface Foo { + get foo(param): string; + set foo(); +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-parameters-babel-7/options.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-parameters-babel-7/options.json new file mode 100644 index 0000000000..29a3f0e841 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-parameters-babel-7/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": false +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-parameters-babel-7/output.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-parameters-babel-7/output.json new file mode 100644 index 0000000000..15833b14b3 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-parameters-babel-7/output.json @@ -0,0 +1,70 @@ +{ + "type": "File", + "start":0,"end":56,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":1}}, + "errors": [ + "SyntaxError: A 'get' accesor must not have any formal parameters. (3:5)", + "SyntaxError: A 'set' accesor must have exactly one formal parameter. (4:1)" + ], + "program": { + "type": "Program", + "start":0,"end":56,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":1}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSInterfaceDeclaration", + "start":0,"end":56,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":1}}, + "id": { + "type": "Identifier", + "start":10,"end":13,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":13},"identifierName":"Foo"}, + "name": "Foo" + }, + "body": { + "type": "TSInterfaceBody", + "start":14,"end":56,"loc":{"start":{"line":1,"column":14},"end":{"line":4,"column":1}}, + "body": [ + { + "type": "TSMethodSignature", + "start":18,"end":41,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":25}}, + "key": { + "type": "Identifier", + "start":22,"end":25,"loc":{"start":{"line":2,"column":6},"end":{"line":2,"column":9},"identifierName":"foo"}, + "name": "foo" + }, + "computed": false, + "kind": "get", + "parameters": [ + { + "type": "Identifier", + "start":26,"end":31,"loc":{"start":{"line":2,"column":10},"end":{"line":2,"column":15},"identifierName":"param"}, + "name": "param" + } + ], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":32,"end":40,"loc":{"start":{"line":2,"column":16},"end":{"line":2,"column":24}}, + "typeAnnotation": { + "type": "TSStringKeyword", + "start":34,"end":40,"loc":{"start":{"line":2,"column":18},"end":{"line":2,"column":24}} + } + } + }, + { + "type": "TSMethodSignature", + "start":44,"end":54,"loc":{"start":{"line":3,"column":2},"end":{"line":3,"column":12}}, + "key": { + "type": "Identifier", + "start":48,"end":51,"loc":{"start":{"line":3,"column":6},"end":{"line":3,"column":9},"identifierName":"foo"}, + "name": "foo" + }, + "computed": false, + "kind": "set", + "parameters": [] + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-parameters/options.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-parameters/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-parameters/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-parameters/output.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-parameters/output.json index 15833b14b3..5e0b3ecbfb 100644 --- a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-parameters/output.json +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-parameters/output.json @@ -33,14 +33,14 @@ }, "computed": false, "kind": "get", - "parameters": [ + "params": [ { "type": "Identifier", "start":26,"end":31,"loc":{"start":{"line":2,"column":10},"end":{"line":2,"column":15},"identifierName":"param"}, "name": "param" } ], - "typeAnnotation": { + "returnType": { "type": "TSTypeAnnotation", "start":32,"end":40,"loc":{"start":{"line":2,"column":16},"end":{"line":2,"column":24}}, "typeAnnotation": { @@ -59,7 +59,7 @@ }, "computed": false, "kind": "set", - "parameters": [] + "params": [] } ] } diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-reset-parameter-babel-7/input.ts b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-reset-parameter-babel-7/input.ts new file mode 100644 index 0000000000..9acf2deb48 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-reset-parameter-babel-7/input.ts @@ -0,0 +1,3 @@ +interface Foo { + set bar(...v); +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-reset-parameter-babel-7/options.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-reset-parameter-babel-7/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-reset-parameter-babel-7/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-reset-parameter-babel-7/output.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-reset-parameter-babel-7/output.json new file mode 100644 index 0000000000..f8308ac4ee --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-reset-parameter-babel-7/output.json @@ -0,0 +1,53 @@ +{ + "type": "File", + "start":0,"end":34,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "errors": [ + "SyntaxError: A 'set' accessor cannot have rest parameter. (3:1)" + ], + "program": { + "type": "Program", + "start":0,"end":34,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSInterfaceDeclaration", + "start":0,"end":34,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "id": { + "type": "Identifier", + "start":10,"end":13,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":13},"identifierName":"Foo"}, + "name": "Foo" + }, + "body": { + "type": "TSInterfaceBody", + "start":14,"end":34,"loc":{"start":{"line":1,"column":14},"end":{"line":3,"column":1}}, + "body": [ + { + "type": "TSMethodSignature", + "start":18,"end":32,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":16}}, + "key": { + "type": "Identifier", + "start":22,"end":25,"loc":{"start":{"line":2,"column":6},"end":{"line":2,"column":9},"identifierName":"bar"}, + "name": "bar" + }, + "computed": false, + "kind": "set", + "params": [ + { + "type": "RestElement", + "start":26,"end":30,"loc":{"start":{"line":2,"column":10},"end":{"line":2,"column":14}}, + "argument": { + "type": "Identifier", + "start":29,"end":30,"loc":{"start":{"line":2,"column":13},"end":{"line":2,"column":14},"identifierName":"v"}, + "name": "v" + } + } + ] + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-reset-parameter/options.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-reset-parameter/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-reset-parameter/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-reset-parameter/output.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-reset-parameter/output.json index 8183156236..f8308ac4ee 100644 --- a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-reset-parameter/output.json +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-reset-parameter/output.json @@ -32,7 +32,7 @@ }, "computed": false, "kind": "set", - "parameters": [ + "params": [ { "type": "RestElement", "start":26,"end":30,"loc":{"start":{"line":2,"column":10},"end":{"line":2,"column":14}}, diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-return-types-babel-7/input.ts b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-return-types-babel-7/input.ts new file mode 100644 index 0000000000..ee80bfe1d8 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-return-types-babel-7/input.ts @@ -0,0 +1,3 @@ +interface Foo { + set foo(param): string; +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-return-types-babel-7/options.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-return-types-babel-7/options.json new file mode 100644 index 0000000000..29a3f0e841 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-return-types-babel-7/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": false +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-return-types-babel-7/output.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-return-types-babel-7/output.json new file mode 100644 index 0000000000..3d08507920 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-return-types-babel-7/output.json @@ -0,0 +1,57 @@ +{ + "type": "File", + "start":0,"end":43,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "errors": [ + "SyntaxError: A 'set' accessor cannot have a return type annotation. (2:16)" + ], + "program": { + "type": "Program", + "start":0,"end":43,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSInterfaceDeclaration", + "start":0,"end":43,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "id": { + "type": "Identifier", + "start":10,"end":13,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":13},"identifierName":"Foo"}, + "name": "Foo" + }, + "body": { + "type": "TSInterfaceBody", + "start":14,"end":43,"loc":{"start":{"line":1,"column":14},"end":{"line":3,"column":1}}, + "body": [ + { + "type": "TSMethodSignature", + "start":18,"end":41,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":25}}, + "kind": "set", + "key": { + "type": "Identifier", + "start":22,"end":25,"loc":{"start":{"line":2,"column":6},"end":{"line":2,"column":9},"identifierName":"foo"}, + "name": "foo" + }, + "computed": false, + "parameters": [ + { + "type": "Identifier", + "start":26,"end":31,"loc":{"start":{"line":2,"column":10},"end":{"line":2,"column":15},"identifierName":"param"}, + "name": "param" + } + ], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":32,"end":40,"loc":{"start":{"line":2,"column":16},"end":{"line":2,"column":24}}, + "typeAnnotation": { + "type": "TSStringKeyword", + "start":34,"end":40,"loc":{"start":{"line":2,"column":18},"end":{"line":2,"column":24}} + } + } + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-return-types/options.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-return-types/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-return-types/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-return-types/output.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-return-types/output.json index 557a0e88ff..fd5c70ed24 100644 --- a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-return-types/output.json +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-return-types/output.json @@ -32,14 +32,14 @@ }, "computed": false, "kind": "set", - "parameters": [ + "params": [ { "type": "Identifier", "start":26,"end":31,"loc":{"start":{"line":2,"column":10},"end":{"line":2,"column":15},"identifierName":"param"}, "name": "param" } ], - "typeAnnotation": { + "returnType": { "type": "TSTypeAnnotation", "start":32,"end":40,"loc":{"start":{"line":2,"column":16},"end":{"line":2,"column":24}}, "typeAnnotation": { diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-this-parameters-babel-7/input.ts b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-this-parameters-babel-7/input.ts new file mode 100644 index 0000000000..0c35d67abc --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-this-parameters-babel-7/input.ts @@ -0,0 +1,4 @@ +interface Foo { + get bar(this: Foo); + set bar(this: Foo); +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-this-parameters-babel-7/options.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-this-parameters-babel-7/options.json new file mode 100644 index 0000000000..29a3f0e841 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-this-parameters-babel-7/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": false +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-this-parameters-babel-7/output.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-this-parameters-babel-7/output.json new file mode 100644 index 0000000000..53aad55992 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-this-parameters-babel-7/output.json @@ -0,0 +1,95 @@ +{ + "type": "File", + "start":0,"end":61,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":1}}, + "errors": [ + "SyntaxError: A 'get' accesor must not have any formal parameters. (3:5)", + "SyntaxError: 'get' and 'set' accessors cannot declare 'this' parameters. (3:5)", + "SyntaxError: 'get' and 'set' accessors cannot declare 'this' parameters. (4:1)" + ], + "program": { + "type": "Program", + "start":0,"end":61,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":1}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSInterfaceDeclaration", + "start":0,"end":61,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":1}}, + "id": { + "type": "Identifier", + "start":10,"end":13,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":13},"identifierName":"Foo"}, + "name": "Foo" + }, + "body": { + "type": "TSInterfaceBody", + "start":14,"end":61,"loc":{"start":{"line":1,"column":14},"end":{"line":4,"column":1}}, + "body": [ + { + "type": "TSMethodSignature", + "start":18,"end":37,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":21}}, + "key": { + "type": "Identifier", + "start":22,"end":25,"loc":{"start":{"line":2,"column":6},"end":{"line":2,"column":9},"identifierName":"bar"}, + "name": "bar" + }, + "computed": false, + "kind": "get", + "parameters": [ + { + "type": "Identifier", + "start":26,"end":35,"loc":{"start":{"line":2,"column":10},"end":{"line":2,"column":19},"identifierName":"this"}, + "name": "this", + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":30,"end":35,"loc":{"start":{"line":2,"column":14},"end":{"line":2,"column":19}}, + "typeAnnotation": { + "type": "TSTypeReference", + "start":32,"end":35,"loc":{"start":{"line":2,"column":16},"end":{"line":2,"column":19}}, + "typeName": { + "type": "Identifier", + "start":32,"end":35,"loc":{"start":{"line":2,"column":16},"end":{"line":2,"column":19},"identifierName":"Foo"}, + "name": "Foo" + } + } + } + } + ] + }, + { + "type": "TSMethodSignature", + "start":40,"end":59,"loc":{"start":{"line":3,"column":2},"end":{"line":3,"column":21}}, + "key": { + "type": "Identifier", + "start":44,"end":47,"loc":{"start":{"line":3,"column":6},"end":{"line":3,"column":9},"identifierName":"bar"}, + "name": "bar" + }, + "computed": false, + "kind": "set", + "parameters": [ + { + "type": "Identifier", + "start":48,"end":57,"loc":{"start":{"line":3,"column":10},"end":{"line":3,"column":19},"identifierName":"this"}, + "name": "this", + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":52,"end":57,"loc":{"start":{"line":3,"column":14},"end":{"line":3,"column":19}}, + "typeAnnotation": { + "type": "TSTypeReference", + "start":54,"end":57,"loc":{"start":{"line":3,"column":16},"end":{"line":3,"column":19}}, + "typeName": { + "type": "Identifier", + "start":54,"end":57,"loc":{"start":{"line":3,"column":16},"end":{"line":3,"column":19},"identifierName":"Foo"}, + "name": "Foo" + } + } + } + } + ] + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-this-parameters/options.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-this-parameters/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-this-parameters/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-this-parameters/output.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-this-parameters/output.json index 53aad55992..2e706b41c7 100644 --- a/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-this-parameters/output.json +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-invalid-this-parameters/output.json @@ -34,7 +34,7 @@ }, "computed": false, "kind": "get", - "parameters": [ + "params": [ { "type": "Identifier", "start":26,"end":35,"loc":{"start":{"line":2,"column":10},"end":{"line":2,"column":19},"identifierName":"this"}, @@ -65,7 +65,7 @@ }, "computed": false, "kind": "set", - "parameters": [ + "params": [ { "type": "Identifier", "start":48,"end":57,"loc":{"start":{"line":3,"column":10},"end":{"line":3,"column":19},"identifierName":"this"}, diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-methods-babel-7/input.ts b/packages/babel-parser/test/fixtures/typescript/interface/get-set-methods-babel-7/input.ts new file mode 100644 index 0000000000..d9df5e0222 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-methods-babel-7/input.ts @@ -0,0 +1,4 @@ +interface Foo { + get(): string; + set(): string; +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-methods-babel-7/options.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-methods-babel-7/options.json new file mode 100644 index 0000000000..29a3f0e841 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-methods-babel-7/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": false +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-methods-babel-7/output.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-methods-babel-7/output.json new file mode 100644 index 0000000000..e2119a7de9 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-methods-babel-7/output.json @@ -0,0 +1,68 @@ +{ + "type": "File", + "start":0,"end":51,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":1}}, + "program": { + "type": "Program", + "start":0,"end":51,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":1}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSInterfaceDeclaration", + "start":0,"end":51,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":1}}, + "id": { + "type": "Identifier", + "start":10,"end":13,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":13},"identifierName":"Foo"}, + "name": "Foo" + }, + "body": { + "type": "TSInterfaceBody", + "start":14,"end":51,"loc":{"start":{"line":1,"column":14},"end":{"line":4,"column":1}}, + "body": [ + { + "type": "TSMethodSignature", + "start":18,"end":32,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":16}}, + "key": { + "type": "Identifier", + "start":18,"end":21,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":5},"identifierName":"get"}, + "name": "get" + }, + "computed": false, + "parameters": [], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":23,"end":31,"loc":{"start":{"line":2,"column":7},"end":{"line":2,"column":15}}, + "typeAnnotation": { + "type": "TSStringKeyword", + "start":25,"end":31,"loc":{"start":{"line":2,"column":9},"end":{"line":2,"column":15}} + } + }, + "kind": "method" + }, + { + "type": "TSMethodSignature", + "start":35,"end":49,"loc":{"start":{"line":3,"column":2},"end":{"line":3,"column":16}}, + "key": { + "type": "Identifier", + "start":35,"end":38,"loc":{"start":{"line":3,"column":2},"end":{"line":3,"column":5},"identifierName":"set"}, + "name": "set" + }, + "computed": false, + "parameters": [], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":40,"end":48,"loc":{"start":{"line":3,"column":7},"end":{"line":3,"column":15}}, + "typeAnnotation": { + "type": "TSStringKeyword", + "start":42,"end":48,"loc":{"start":{"line":3,"column":9},"end":{"line":3,"column":15}} + } + }, + "kind": "method" + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-methods/options.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-methods/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-methods/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-methods/output.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-methods/output.json index e2119a7de9..2849f3a844 100644 --- a/packages/babel-parser/test/fixtures/typescript/interface/get-set-methods/output.json +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-methods/output.json @@ -28,8 +28,8 @@ "name": "get" }, "computed": false, - "parameters": [], - "typeAnnotation": { + "params": [], + "returnType": { "type": "TSTypeAnnotation", "start":23,"end":31,"loc":{"start":{"line":2,"column":7},"end":{"line":2,"column":15}}, "typeAnnotation": { @@ -48,8 +48,8 @@ "name": "set" }, "computed": false, - "parameters": [], - "typeAnnotation": { + "params": [], + "returnType": { "type": "TSTypeAnnotation", "start":40,"end":48,"loc":{"start":{"line":3,"column":7},"end":{"line":3,"column":15}}, "typeAnnotation": { diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set-type-parameters/output.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set-type-parameters/output.json index c7bd340a73..5b6a414dae 100644 --- a/packages/babel-parser/test/fixtures/typescript/interface/get-set-type-parameters/output.json +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set-type-parameters/output.json @@ -48,8 +48,8 @@ } ] }, - "parameters": [], - "typeAnnotation": { + "params": [], + "returnType": { "type": "TSTypeAnnotation", "start":30,"end":38,"loc":{"start":{"line":2,"column":14},"end":{"line":2,"column":22}}, "typeAnnotation": { @@ -83,7 +83,7 @@ } ] }, - "parameters": [ + "params": [ { "type": "Identifier", "start":53,"end":54,"loc":{"start":{"line":3,"column":13},"end":{"line":3,"column":14},"identifierName":"v"}, diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set/options.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/get-set/output.json b/packages/babel-parser/test/fixtures/typescript/interface/get-set/output.json index 1e7ddec8e4..85f1826429 100644 --- a/packages/babel-parser/test/fixtures/typescript/interface/get-set/output.json +++ b/packages/babel-parser/test/fixtures/typescript/interface/get-set/output.json @@ -29,8 +29,8 @@ }, "computed": false, "kind": "get", - "parameters": [], - "typeAnnotation": { + "params": [], + "returnType": { "type": "TSTypeAnnotation", "start":27,"end":35,"loc":{"start":{"line":2,"column":11},"end":{"line":2,"column":19}}, "typeAnnotation": { @@ -49,7 +49,7 @@ }, "computed": false, "kind": "set", - "parameters": [ + "params": [ { "type": "Identifier", "start":47,"end":48,"loc":{"start":{"line":3,"column":10},"end":{"line":3,"column":11},"identifierName":"v"}, diff --git a/packages/babel-parser/test/fixtures/typescript/interface/invalid-modifiers-method-babel-7/input.ts b/packages/babel-parser/test/fixtures/typescript/interface/invalid-modifiers-method-babel-7/input.ts new file mode 100644 index 0000000000..d8a52921dd --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/invalid-modifiers-method-babel-7/input.ts @@ -0,0 +1,9 @@ +interface Foo { + private a(); + public b(); + protected c(); + static d(); + declare e(); + abstract f(); + readonly g(); +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/invalid-modifiers-method-babel-7/options.json b/packages/babel-parser/test/fixtures/typescript/interface/invalid-modifiers-method-babel-7/options.json new file mode 100644 index 0000000000..29a3f0e841 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/invalid-modifiers-method-babel-7/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": false +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/invalid-modifiers-method-babel-7/output.json b/packages/babel-parser/test/fixtures/typescript/interface/invalid-modifiers-method-babel-7/output.json new file mode 100644 index 0000000000..ac8626f2cc --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/invalid-modifiers-method-babel-7/output.json @@ -0,0 +1,128 @@ +{ + "type": "File", + "start":0,"end":124,"loc":{"start":{"line":1,"column":0},"end":{"line":9,"column":1}}, + "errors": [ + "SyntaxError: 'private' modifier cannot appear on a type member. (2:2)", + "SyntaxError: 'public' modifier cannot appear on a type member. (3:2)", + "SyntaxError: 'protected' modifier cannot appear on a type member. (4:2)", + "SyntaxError: 'static' modifier cannot appear on a type member. (5:2)", + "SyntaxError: 'declare' modifier cannot appear on a type member. (6:2)", + "SyntaxError: 'abstract' modifier cannot appear on a type member. (7:2)", + "SyntaxError: 'readonly' modifier can only appear on a property declaration or index signature. (8:2)" + ], + "program": { + "type": "Program", + "start":0,"end":124,"loc":{"start":{"line":1,"column":0},"end":{"line":9,"column":1}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSInterfaceDeclaration", + "start":0,"end":124,"loc":{"start":{"line":1,"column":0},"end":{"line":9,"column":1}}, + "id": { + "type": "Identifier", + "start":10,"end":13,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":13},"identifierName":"Foo"}, + "name": "Foo" + }, + "body": { + "type": "TSInterfaceBody", + "start":14,"end":124,"loc":{"start":{"line":1,"column":14},"end":{"line":9,"column":1}}, + "body": [ + { + "type": "TSMethodSignature", + "start":18,"end":30,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":14}}, + "accessibility": "private", + "key": { + "type": "Identifier", + "start":26,"end":27,"loc":{"start":{"line":2,"column":10},"end":{"line":2,"column":11},"identifierName":"a"}, + "name": "a" + }, + "computed": false, + "parameters": [], + "kind": "method" + }, + { + "type": "TSMethodSignature", + "start":33,"end":44,"loc":{"start":{"line":3,"column":2},"end":{"line":3,"column":13}}, + "accessibility": "public", + "key": { + "type": "Identifier", + "start":40,"end":41,"loc":{"start":{"line":3,"column":9},"end":{"line":3,"column":10},"identifierName":"b"}, + "name": "b" + }, + "computed": false, + "parameters": [], + "kind": "method" + }, + { + "type": "TSMethodSignature", + "start":47,"end":61,"loc":{"start":{"line":4,"column":2},"end":{"line":4,"column":16}}, + "accessibility": "protected", + "key": { + "type": "Identifier", + "start":57,"end":58,"loc":{"start":{"line":4,"column":12},"end":{"line":4,"column":13},"identifierName":"c"}, + "name": "c" + }, + "computed": false, + "parameters": [], + "kind": "method" + }, + { + "type": "TSMethodSignature", + "start":64,"end":75,"loc":{"start":{"line":5,"column":2},"end":{"line":5,"column":13}}, + "static": true, + "key": { + "type": "Identifier", + "start":71,"end":72,"loc":{"start":{"line":5,"column":9},"end":{"line":5,"column":10},"identifierName":"d"}, + "name": "d" + }, + "computed": false, + "parameters": [], + "kind": "method" + }, + { + "type": "TSMethodSignature", + "start":78,"end":90,"loc":{"start":{"line":6,"column":2},"end":{"line":6,"column":14}}, + "declare": true, + "key": { + "type": "Identifier", + "start":86,"end":87,"loc":{"start":{"line":6,"column":10},"end":{"line":6,"column":11},"identifierName":"e"}, + "name": "e" + }, + "computed": false, + "parameters": [], + "kind": "method" + }, + { + "type": "TSMethodSignature", + "start":93,"end":106,"loc":{"start":{"line":7,"column":2},"end":{"line":7,"column":15}}, + "abstract": true, + "key": { + "type": "Identifier", + "start":102,"end":103,"loc":{"start":{"line":7,"column":11},"end":{"line":7,"column":12},"identifierName":"f"}, + "name": "f" + }, + "computed": false, + "parameters": [], + "kind": "method" + }, + { + "type": "TSMethodSignature", + "start":109,"end":122,"loc":{"start":{"line":8,"column":2},"end":{"line":8,"column":15}}, + "readonly": true, + "key": { + "type": "Identifier", + "start":118,"end":119,"loc":{"start":{"line":8,"column":11},"end":{"line":8,"column":12},"identifierName":"g"}, + "name": "g" + }, + "computed": false, + "parameters": [], + "kind": "method" + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/interface/invalid-modifiers-method/options.json b/packages/babel-parser/test/fixtures/typescript/interface/invalid-modifiers-method/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/invalid-modifiers-method/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/invalid-modifiers-method/output.json b/packages/babel-parser/test/fixtures/typescript/interface/invalid-modifiers-method/output.json index ac8626f2cc..83ad153d37 100644 --- a/packages/babel-parser/test/fixtures/typescript/interface/invalid-modifiers-method/output.json +++ b/packages/babel-parser/test/fixtures/typescript/interface/invalid-modifiers-method/output.json @@ -38,7 +38,7 @@ "name": "a" }, "computed": false, - "parameters": [], + "params": [], "kind": "method" }, { @@ -51,7 +51,7 @@ "name": "b" }, "computed": false, - "parameters": [], + "params": [], "kind": "method" }, { @@ -64,7 +64,7 @@ "name": "c" }, "computed": false, - "parameters": [], + "params": [], "kind": "method" }, { @@ -77,7 +77,7 @@ "name": "d" }, "computed": false, - "parameters": [], + "params": [], "kind": "method" }, { @@ -90,7 +90,7 @@ "name": "e" }, "computed": false, - "parameters": [], + "params": [], "kind": "method" }, { @@ -103,7 +103,7 @@ "name": "f" }, "computed": false, - "parameters": [], + "params": [], "kind": "method" }, { @@ -116,7 +116,7 @@ "name": "g" }, "computed": false, - "parameters": [], + "params": [], "kind": "method" } ] diff --git a/packages/babel-parser/test/fixtures/typescript/interface/method-computed-babel-7/input.ts b/packages/babel-parser/test/fixtures/typescript/interface/method-computed-babel-7/input.ts new file mode 100644 index 0000000000..688dc322af --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/method-computed-babel-7/input.ts @@ -0,0 +1,4 @@ +interface I { + [Symbol.iterator](): void; + [Symbol.iterator]?(): number; +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/method-computed-babel-7/options.json b/packages/babel-parser/test/fixtures/typescript/interface/method-computed-babel-7/options.json new file mode 100644 index 0000000000..29a3f0e841 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/method-computed-babel-7/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": false +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/method-computed-babel-7/output.json b/packages/babel-parser/test/fixtures/typescript/interface/method-computed-babel-7/output.json new file mode 100644 index 0000000000..112c4b21be --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/method-computed-babel-7/output.json @@ -0,0 +1,89 @@ +{ + "type": "File", + "start":0,"end":80,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":1}}, + "program": { + "type": "Program", + "start":0,"end":80,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":1}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSInterfaceDeclaration", + "start":0,"end":80,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":1}}, + "id": { + "type": "Identifier", + "start":10,"end":11,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":11},"identifierName":"I"}, + "name": "I" + }, + "body": { + "type": "TSInterfaceBody", + "start":12,"end":80,"loc":{"start":{"line":1,"column":12},"end":{"line":4,"column":1}}, + "body": [ + { + "type": "TSMethodSignature", + "start":18,"end":44,"loc":{"start":{"line":2,"column":4},"end":{"line":2,"column":30}}, + "computed": true, + "key": { + "type": "MemberExpression", + "start":19,"end":34,"loc":{"start":{"line":2,"column":5},"end":{"line":2,"column":20}}, + "object": { + "type": "Identifier", + "start":19,"end":25,"loc":{"start":{"line":2,"column":5},"end":{"line":2,"column":11},"identifierName":"Symbol"}, + "name": "Symbol" + }, + "computed": false, + "property": { + "type": "Identifier", + "start":26,"end":34,"loc":{"start":{"line":2,"column":12},"end":{"line":2,"column":20},"identifierName":"iterator"}, + "name": "iterator" + } + }, + "parameters": [], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":37,"end":43,"loc":{"start":{"line":2,"column":23},"end":{"line":2,"column":29}}, + "typeAnnotation": { + "type": "TSVoidKeyword", + "start":39,"end":43,"loc":{"start":{"line":2,"column":25},"end":{"line":2,"column":29}} + } + }, + "kind": "method" + }, + { + "type": "TSMethodSignature", + "start":49,"end":78,"loc":{"start":{"line":3,"column":4},"end":{"line":3,"column":33}}, + "computed": true, + "key": { + "type": "MemberExpression", + "start":50,"end":65,"loc":{"start":{"line":3,"column":5},"end":{"line":3,"column":20}}, + "object": { + "type": "Identifier", + "start":50,"end":56,"loc":{"start":{"line":3,"column":5},"end":{"line":3,"column":11},"identifierName":"Symbol"}, + "name": "Symbol" + }, + "computed": false, + "property": { + "type": "Identifier", + "start":57,"end":65,"loc":{"start":{"line":3,"column":12},"end":{"line":3,"column":20},"identifierName":"iterator"}, + "name": "iterator" + } + }, + "optional": true, + "parameters": [], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":69,"end":77,"loc":{"start":{"line":3,"column":24},"end":{"line":3,"column":32}}, + "typeAnnotation": { + "type": "TSNumberKeyword", + "start":71,"end":77,"loc":{"start":{"line":3,"column":26},"end":{"line":3,"column":32}} + } + }, + "kind": "method" + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/interface/method-computed/options.json b/packages/babel-parser/test/fixtures/typescript/interface/method-computed/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/method-computed/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/method-computed/output.json b/packages/babel-parser/test/fixtures/typescript/interface/method-computed/output.json index 112c4b21be..1c948895e6 100644 --- a/packages/babel-parser/test/fixtures/typescript/interface/method-computed/output.json +++ b/packages/babel-parser/test/fixtures/typescript/interface/method-computed/output.json @@ -38,8 +38,8 @@ "name": "iterator" } }, - "parameters": [], - "typeAnnotation": { + "params": [], + "returnType": { "type": "TSTypeAnnotation", "start":37,"end":43,"loc":{"start":{"line":2,"column":23},"end":{"line":2,"column":29}}, "typeAnnotation": { @@ -69,8 +69,8 @@ } }, "optional": true, - "parameters": [], - "typeAnnotation": { + "params": [], + "returnType": { "type": "TSTypeAnnotation", "start":69,"end":77,"loc":{"start":{"line":3,"column":24},"end":{"line":3,"column":32}}, "typeAnnotation": { diff --git a/packages/babel-parser/test/fixtures/typescript/interface/method-generic/output.json b/packages/babel-parser/test/fixtures/typescript/interface/method-generic/output.json index cc753d17cd..dd94bb07cb 100644 --- a/packages/babel-parser/test/fixtures/typescript/interface/method-generic/output.json +++ b/packages/babel-parser/test/fixtures/typescript/interface/method-generic/output.json @@ -71,8 +71,8 @@ } ] }, - "parameters": [], - "typeAnnotation": { + "params": [], + "returnType": { "type": "TSTypeAnnotation", "start":55,"end":58,"loc":{"start":{"line":2,"column":41},"end":{"line":2,"column":44}}, "typeAnnotation": { diff --git a/packages/babel-parser/test/fixtures/typescript/interface/method-optional-babel-7/input.ts b/packages/babel-parser/test/fixtures/typescript/interface/method-optional-babel-7/input.ts new file mode 100644 index 0000000000..9ceae32a53 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/method-optional-babel-7/input.ts @@ -0,0 +1,3 @@ +interface I { + m?(): void; +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/method-optional-babel-7/options.json b/packages/babel-parser/test/fixtures/typescript/interface/method-optional-babel-7/options.json new file mode 100644 index 0000000000..29a3f0e841 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/method-optional-babel-7/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": false +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/method-optional-babel-7/output.json b/packages/babel-parser/test/fixtures/typescript/interface/method-optional-babel-7/output.json new file mode 100644 index 0000000000..353478b4de --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/method-optional-babel-7/output.json @@ -0,0 +1,49 @@ +{ + "type": "File", + "start":0,"end":31,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "program": { + "type": "Program", + "start":0,"end":31,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSInterfaceDeclaration", + "start":0,"end":31,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "id": { + "type": "Identifier", + "start":10,"end":11,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":11},"identifierName":"I"}, + "name": "I" + }, + "body": { + "type": "TSInterfaceBody", + "start":12,"end":31,"loc":{"start":{"line":1,"column":12},"end":{"line":3,"column":1}}, + "body": [ + { + "type": "TSMethodSignature", + "start":18,"end":29,"loc":{"start":{"line":2,"column":4},"end":{"line":2,"column":15}}, + "key": { + "type": "Identifier", + "start":18,"end":19,"loc":{"start":{"line":2,"column":4},"end":{"line":2,"column":5},"identifierName":"m"}, + "name": "m" + }, + "computed": false, + "optional": true, + "parameters": [], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":22,"end":28,"loc":{"start":{"line":2,"column":8},"end":{"line":2,"column":14}}, + "typeAnnotation": { + "type": "TSVoidKeyword", + "start":24,"end":28,"loc":{"start":{"line":2,"column":10},"end":{"line":2,"column":14}} + } + }, + "kind": "method" + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/interface/method-optional/options.json b/packages/babel-parser/test/fixtures/typescript/interface/method-optional/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/method-optional/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/method-optional/output.json b/packages/babel-parser/test/fixtures/typescript/interface/method-optional/output.json index 353478b4de..dfa34b71a5 100644 --- a/packages/babel-parser/test/fixtures/typescript/interface/method-optional/output.json +++ b/packages/babel-parser/test/fixtures/typescript/interface/method-optional/output.json @@ -29,8 +29,8 @@ }, "computed": false, "optional": true, - "parameters": [], - "typeAnnotation": { + "params": [], + "returnType": { "type": "TSTypeAnnotation", "start":22,"end":28,"loc":{"start":{"line":2,"column":8},"end":{"line":2,"column":14}}, "typeAnnotation": { diff --git a/packages/babel-parser/test/fixtures/typescript/interface/method-plain-babel-7/input.ts b/packages/babel-parser/test/fixtures/typescript/interface/method-plain-babel-7/input.ts new file mode 100644 index 0000000000..8d4d83dcce --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/method-plain-babel-7/input.ts @@ -0,0 +1,4 @@ +interface I { + m(); + m(x?: number, ...y: number[]): void; +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/method-plain-babel-7/options.json b/packages/babel-parser/test/fixtures/typescript/interface/method-plain-babel-7/options.json new file mode 100644 index 0000000000..29a3f0e841 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/method-plain-babel-7/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": false +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/method-plain-babel-7/output.json b/packages/babel-parser/test/fixtures/typescript/interface/method-plain-babel-7/output.json new file mode 100644 index 0000000000..3db978d83f --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/method-plain-babel-7/output.json @@ -0,0 +1,96 @@ +{ + "type": "File", + "start":0,"end":65,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":1}}, + "program": { + "type": "Program", + "start":0,"end":65,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":1}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSInterfaceDeclaration", + "start":0,"end":65,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":1}}, + "id": { + "type": "Identifier", + "start":10,"end":11,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":11},"identifierName":"I"}, + "name": "I" + }, + "body": { + "type": "TSInterfaceBody", + "start":12,"end":65,"loc":{"start":{"line":1,"column":12},"end":{"line":4,"column":1}}, + "body": [ + { + "type": "TSMethodSignature", + "start":18,"end":22,"loc":{"start":{"line":2,"column":4},"end":{"line":2,"column":8}}, + "key": { + "type": "Identifier", + "start":18,"end":19,"loc":{"start":{"line":2,"column":4},"end":{"line":2,"column":5},"identifierName":"m"}, + "name": "m" + }, + "computed": false, + "parameters": [], + "kind": "method" + }, + { + "type": "TSMethodSignature", + "start":27,"end":63,"loc":{"start":{"line":3,"column":4},"end":{"line":3,"column":40}}, + "key": { + "type": "Identifier", + "start":27,"end":28,"loc":{"start":{"line":3,"column":4},"end":{"line":3,"column":5},"identifierName":"m"}, + "name": "m" + }, + "computed": false, + "parameters": [ + { + "type": "Identifier", + "start":29,"end":39,"loc":{"start":{"line":3,"column":6},"end":{"line":3,"column":16},"identifierName":"x"}, + "name": "x", + "optional": true, + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":31,"end":39,"loc":{"start":{"line":3,"column":8},"end":{"line":3,"column":16}}, + "typeAnnotation": { + "type": "TSNumberKeyword", + "start":33,"end":39,"loc":{"start":{"line":3,"column":10},"end":{"line":3,"column":16}} + } + } + }, + { + "type": "RestElement", + "start":41,"end":55,"loc":{"start":{"line":3,"column":18},"end":{"line":3,"column":32}}, + "argument": { + "type": "Identifier", + "start":44,"end":45,"loc":{"start":{"line":3,"column":21},"end":{"line":3,"column":22},"identifierName":"y"}, + "name": "y" + }, + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":45,"end":55,"loc":{"start":{"line":3,"column":22},"end":{"line":3,"column":32}}, + "typeAnnotation": { + "type": "TSArrayType", + "start":47,"end":55,"loc":{"start":{"line":3,"column":24},"end":{"line":3,"column":32}}, + "elementType": { + "type": "TSNumberKeyword", + "start":47,"end":53,"loc":{"start":{"line":3,"column":24},"end":{"line":3,"column":30}} + } + } + } + } + ], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":56,"end":62,"loc":{"start":{"line":3,"column":33},"end":{"line":3,"column":39}}, + "typeAnnotation": { + "type": "TSVoidKeyword", + "start":58,"end":62,"loc":{"start":{"line":3,"column":35},"end":{"line":3,"column":39}} + } + }, + "kind": "method" + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/interface/method-plain/options.json b/packages/babel-parser/test/fixtures/typescript/interface/method-plain/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/method-plain/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/method-plain/output.json b/packages/babel-parser/test/fixtures/typescript/interface/method-plain/output.json index 3db978d83f..0fe2f4b320 100644 --- a/packages/babel-parser/test/fixtures/typescript/interface/method-plain/output.json +++ b/packages/babel-parser/test/fixtures/typescript/interface/method-plain/output.json @@ -28,7 +28,7 @@ "name": "m" }, "computed": false, - "parameters": [], + "params": [], "kind": "method" }, { @@ -40,7 +40,7 @@ "name": "m" }, "computed": false, - "parameters": [ + "params": [ { "type": "Identifier", "start":29,"end":39,"loc":{"start":{"line":3,"column":6},"end":{"line":3,"column":16},"identifierName":"x"}, @@ -77,7 +77,7 @@ } } ], - "typeAnnotation": { + "returnType": { "type": "TSTypeAnnotation", "start":56,"end":62,"loc":{"start":{"line":3,"column":33},"end":{"line":3,"column":39}}, "typeAnnotation": { diff --git a/packages/babel-parser/test/fixtures/typescript/interface/pattern-parameters-babel-7/input.ts b/packages/babel-parser/test/fixtures/typescript/interface/pattern-parameters-babel-7/input.ts new file mode 100644 index 0000000000..89dc6c6146 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/pattern-parameters-babel-7/input.ts @@ -0,0 +1,5 @@ +interface A { + foo([]?): void; + bar({}, []?): any; + baz(a: string, b: number, []?): void; +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/pattern-parameters-babel-7/options.json b/packages/babel-parser/test/fixtures/typescript/interface/pattern-parameters-babel-7/options.json new file mode 100644 index 0000000000..29a3f0e841 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/pattern-parameters-babel-7/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": false +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/pattern-parameters-babel-7/output.json b/packages/babel-parser/test/fixtures/typescript/interface/pattern-parameters-babel-7/output.json new file mode 100644 index 0000000000..4664dc3b89 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/pattern-parameters-babel-7/output.json @@ -0,0 +1,140 @@ +{ + "type": "File", + "start":0,"end":94,"loc":{"start":{"line":1,"column":0},"end":{"line":5,"column":1}}, + "program": { + "type": "Program", + "start":0,"end":94,"loc":{"start":{"line":1,"column":0},"end":{"line":5,"column":1}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSInterfaceDeclaration", + "start":0,"end":94,"loc":{"start":{"line":1,"column":0},"end":{"line":5,"column":1}}, + "id": { + "type": "Identifier", + "start":10,"end":11,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":11},"identifierName":"A"}, + "name": "A" + }, + "body": { + "type": "TSInterfaceBody", + "start":12,"end":94,"loc":{"start":{"line":1,"column":12},"end":{"line":5,"column":1}}, + "body": [ + { + "type": "TSMethodSignature", + "start":16,"end":31,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":17}}, + "key": { + "type": "Identifier", + "start":16,"end":19,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":5},"identifierName":"foo"}, + "name": "foo" + }, + "computed": false, + "parameters": [ + { + "type": "ArrayPattern", + "start":20,"end":23,"loc":{"start":{"line":2,"column":6},"end":{"line":2,"column":9}}, + "elements": [], + "optional": true + } + ], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":24,"end":30,"loc":{"start":{"line":2,"column":10},"end":{"line":2,"column":16}}, + "typeAnnotation": { + "type": "TSVoidKeyword", + "start":26,"end":30,"loc":{"start":{"line":2,"column":12},"end":{"line":2,"column":16}} + } + }, + "kind": "method" + }, + { + "type": "TSMethodSignature", + "start":34,"end":52,"loc":{"start":{"line":3,"column":2},"end":{"line":3,"column":20}}, + "key": { + "type": "Identifier", + "start":34,"end":37,"loc":{"start":{"line":3,"column":2},"end":{"line":3,"column":5},"identifierName":"bar"}, + "name": "bar" + }, + "computed": false, + "parameters": [ + { + "type": "ObjectPattern", + "start":38,"end":40,"loc":{"start":{"line":3,"column":6},"end":{"line":3,"column":8}}, + "properties": [] + }, + { + "type": "ArrayPattern", + "start":42,"end":45,"loc":{"start":{"line":3,"column":10},"end":{"line":3,"column":13}}, + "elements": [], + "optional": true + } + ], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":46,"end":51,"loc":{"start":{"line":3,"column":14},"end":{"line":3,"column":19}}, + "typeAnnotation": { + "type": "TSAnyKeyword", + "start":48,"end":51,"loc":{"start":{"line":3,"column":16},"end":{"line":3,"column":19}} + } + }, + "kind": "method" + }, + { + "type": "TSMethodSignature", + "start":55,"end":92,"loc":{"start":{"line":4,"column":2},"end":{"line":4,"column":39}}, + "key": { + "type": "Identifier", + "start":55,"end":58,"loc":{"start":{"line":4,"column":2},"end":{"line":4,"column":5},"identifierName":"baz"}, + "name": "baz" + }, + "computed": false, + "parameters": [ + { + "type": "Identifier", + "start":59,"end":68,"loc":{"start":{"line":4,"column":6},"end":{"line":4,"column":15},"identifierName":"a"}, + "name": "a", + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":60,"end":68,"loc":{"start":{"line":4,"column":7},"end":{"line":4,"column":15}}, + "typeAnnotation": { + "type": "TSStringKeyword", + "start":62,"end":68,"loc":{"start":{"line":4,"column":9},"end":{"line":4,"column":15}} + } + } + }, + { + "type": "Identifier", + "start":70,"end":79,"loc":{"start":{"line":4,"column":17},"end":{"line":4,"column":26},"identifierName":"b"}, + "name": "b", + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":71,"end":79,"loc":{"start":{"line":4,"column":18},"end":{"line":4,"column":26}}, + "typeAnnotation": { + "type": "TSNumberKeyword", + "start":73,"end":79,"loc":{"start":{"line":4,"column":20},"end":{"line":4,"column":26}} + } + } + }, + { + "type": "ArrayPattern", + "start":81,"end":84,"loc":{"start":{"line":4,"column":28},"end":{"line":4,"column":31}}, + "elements": [], + "optional": true + } + ], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":85,"end":91,"loc":{"start":{"line":4,"column":32},"end":{"line":4,"column":38}}, + "typeAnnotation": { + "type": "TSVoidKeyword", + "start":87,"end":91,"loc":{"start":{"line":4,"column":34},"end":{"line":4,"column":38}} + } + }, + "kind": "method" + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/interface/pattern-parameters/options.json b/packages/babel-parser/test/fixtures/typescript/interface/pattern-parameters/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/pattern-parameters/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/pattern-parameters/output.json b/packages/babel-parser/test/fixtures/typescript/interface/pattern-parameters/output.json index 4664dc3b89..e0d3868e0f 100644 --- a/packages/babel-parser/test/fixtures/typescript/interface/pattern-parameters/output.json +++ b/packages/babel-parser/test/fixtures/typescript/interface/pattern-parameters/output.json @@ -28,7 +28,7 @@ "name": "foo" }, "computed": false, - "parameters": [ + "params": [ { "type": "ArrayPattern", "start":20,"end":23,"loc":{"start":{"line":2,"column":6},"end":{"line":2,"column":9}}, @@ -36,7 +36,7 @@ "optional": true } ], - "typeAnnotation": { + "returnType": { "type": "TSTypeAnnotation", "start":24,"end":30,"loc":{"start":{"line":2,"column":10},"end":{"line":2,"column":16}}, "typeAnnotation": { @@ -55,7 +55,7 @@ "name": "bar" }, "computed": false, - "parameters": [ + "params": [ { "type": "ObjectPattern", "start":38,"end":40,"loc":{"start":{"line":3,"column":6},"end":{"line":3,"column":8}}, @@ -68,7 +68,7 @@ "optional": true } ], - "typeAnnotation": { + "returnType": { "type": "TSTypeAnnotation", "start":46,"end":51,"loc":{"start":{"line":3,"column":14},"end":{"line":3,"column":19}}, "typeAnnotation": { @@ -87,7 +87,7 @@ "name": "baz" }, "computed": false, - "parameters": [ + "params": [ { "type": "Identifier", "start":59,"end":68,"loc":{"start":{"line":4,"column":6},"end":{"line":4,"column":15},"identifierName":"a"}, @@ -121,7 +121,7 @@ "optional": true } ], - "typeAnnotation": { + "returnType": { "type": "TSTypeAnnotation", "start":85,"end":91,"loc":{"start":{"line":4,"column":32},"end":{"line":4,"column":38}}, "typeAnnotation": { diff --git a/packages/babel-parser/test/fixtures/typescript/interface/reserved-method-name-babel-7/input.ts b/packages/babel-parser/test/fixtures/typescript/interface/reserved-method-name-babel-7/input.ts new file mode 100644 index 0000000000..76dff7a531 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/reserved-method-name-babel-7/input.ts @@ -0,0 +1,3 @@ +interface I { + catch(): void; +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/reserved-method-name-babel-7/options.json b/packages/babel-parser/test/fixtures/typescript/interface/reserved-method-name-babel-7/options.json new file mode 100644 index 0000000000..29a3f0e841 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/reserved-method-name-babel-7/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": false +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/reserved-method-name-babel-7/output.json b/packages/babel-parser/test/fixtures/typescript/interface/reserved-method-name-babel-7/output.json new file mode 100644 index 0000000000..c32fcfd2ed --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/reserved-method-name-babel-7/output.json @@ -0,0 +1,48 @@ +{ + "type": "File", + "start":0,"end":34,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "program": { + "type": "Program", + "start":0,"end":34,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSInterfaceDeclaration", + "start":0,"end":34,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "id": { + "type": "Identifier", + "start":10,"end":11,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":11},"identifierName":"I"}, + "name": "I" + }, + "body": { + "type": "TSInterfaceBody", + "start":12,"end":34,"loc":{"start":{"line":1,"column":12},"end":{"line":3,"column":1}}, + "body": [ + { + "type": "TSMethodSignature", + "start":18,"end":32,"loc":{"start":{"line":2,"column":4},"end":{"line":2,"column":18}}, + "key": { + "type": "Identifier", + "start":18,"end":23,"loc":{"start":{"line":2,"column":4},"end":{"line":2,"column":9},"identifierName":"catch"}, + "name": "catch" + }, + "computed": false, + "parameters": [], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":25,"end":31,"loc":{"start":{"line":2,"column":11},"end":{"line":2,"column":17}}, + "typeAnnotation": { + "type": "TSVoidKeyword", + "start":27,"end":31,"loc":{"start":{"line":2,"column":13},"end":{"line":2,"column":17}} + } + }, + "kind": "method" + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/interface/reserved-method-name/options.json b/packages/babel-parser/test/fixtures/typescript/interface/reserved-method-name/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/interface/reserved-method-name/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/interface/reserved-method-name/output.json b/packages/babel-parser/test/fixtures/typescript/interface/reserved-method-name/output.json index c32fcfd2ed..b6e3778b0a 100644 --- a/packages/babel-parser/test/fixtures/typescript/interface/reserved-method-name/output.json +++ b/packages/babel-parser/test/fixtures/typescript/interface/reserved-method-name/output.json @@ -28,8 +28,8 @@ "name": "catch" }, "computed": false, - "parameters": [], - "typeAnnotation": { + "params": [], + "returnType": { "type": "TSTypeAnnotation", "start":25,"end":31,"loc":{"start":{"line":2,"column":11},"end":{"line":2,"column":17}}, "typeAnnotation": { diff --git a/packages/babel-parser/test/fixtures/typescript/regression/destructuring-in-function-type-babel-7/input.ts b/packages/babel-parser/test/fixtures/typescript/regression/destructuring-in-function-type-babel-7/input.ts new file mode 100644 index 0000000000..56f3b25d96 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/regression/destructuring-in-function-type-babel-7/input.ts @@ -0,0 +1,3 @@ +type MyType = ({ theme }: any) => any + +type AnotherType = ([a]: any) => any diff --git a/packages/babel-parser/test/fixtures/typescript/regression/destructuring-in-function-type-babel-7/options.json b/packages/babel-parser/test/fixtures/typescript/regression/destructuring-in-function-type-babel-7/options.json new file mode 100644 index 0000000000..29a3f0e841 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/regression/destructuring-in-function-type-babel-7/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": false +} diff --git a/packages/babel-parser/test/fixtures/typescript/regression/destructuring-in-function-type-babel-7/output.json b/packages/babel-parser/test/fixtures/typescript/regression/destructuring-in-function-type-babel-7/output.json new file mode 100644 index 0000000000..c7a987bc3f --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/regression/destructuring-in-function-type-babel-7/output.json @@ -0,0 +1,112 @@ +{ + "type": "File", + "start":0,"end":75,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":36}}, + "program": { + "type": "Program", + "start":0,"end":75,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":36}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSTypeAliasDeclaration", + "start":0,"end":37,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":37}}, + "id": { + "type": "Identifier", + "start":5,"end":11,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":11},"identifierName":"MyType"}, + "name": "MyType" + }, + "typeAnnotation": { + "type": "TSFunctionType", + "start":14,"end":37,"loc":{"start":{"line":1,"column":14},"end":{"line":1,"column":37}}, + "parameters": [ + { + "type": "ObjectPattern", + "start":15,"end":29,"loc":{"start":{"line":1,"column":15},"end":{"line":1,"column":29}}, + "properties": [ + { + "type": "ObjectProperty", + "start":17,"end":22,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":22}}, + "method": false, + "key": { + "type": "Identifier", + "start":17,"end":22,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":22},"identifierName":"theme"}, + "name": "theme" + }, + "computed": false, + "shorthand": true, + "value": { + "type": "Identifier", + "start":17,"end":22,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":22},"identifierName":"theme"}, + "name": "theme" + }, + "extra": { + "shorthand": true + } + } + ], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":24,"end":29,"loc":{"start":{"line":1,"column":24},"end":{"line":1,"column":29}}, + "typeAnnotation": { + "type": "TSAnyKeyword", + "start":26,"end":29,"loc":{"start":{"line":1,"column":26},"end":{"line":1,"column":29}} + } + } + } + ], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":31,"end":37,"loc":{"start":{"line":1,"column":31},"end":{"line":1,"column":37}}, + "typeAnnotation": { + "type": "TSAnyKeyword", + "start":34,"end":37,"loc":{"start":{"line":1,"column":34},"end":{"line":1,"column":37}} + } + } + } + }, + { + "type": "TSTypeAliasDeclaration", + "start":39,"end":75,"loc":{"start":{"line":3,"column":0},"end":{"line":3,"column":36}}, + "id": { + "type": "Identifier", + "start":44,"end":55,"loc":{"start":{"line":3,"column":5},"end":{"line":3,"column":16},"identifierName":"AnotherType"}, + "name": "AnotherType" + }, + "typeAnnotation": { + "type": "TSFunctionType", + "start":58,"end":75,"loc":{"start":{"line":3,"column":19},"end":{"line":3,"column":36}}, + "parameters": [ + { + "type": "ArrayPattern", + "start":59,"end":67,"loc":{"start":{"line":3,"column":20},"end":{"line":3,"column":28}}, + "elements": [ + { + "type": "Identifier", + "start":60,"end":61,"loc":{"start":{"line":3,"column":21},"end":{"line":3,"column":22},"identifierName":"a"}, + "name": "a" + } + ], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":62,"end":67,"loc":{"start":{"line":3,"column":23},"end":{"line":3,"column":28}}, + "typeAnnotation": { + "type": "TSAnyKeyword", + "start":64,"end":67,"loc":{"start":{"line":3,"column":25},"end":{"line":3,"column":28}} + } + } + } + ], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":69,"end":75,"loc":{"start":{"line":3,"column":30},"end":{"line":3,"column":36}}, + "typeAnnotation": { + "type": "TSAnyKeyword", + "start":72,"end":75,"loc":{"start":{"line":3,"column":33},"end":{"line":3,"column":36}} + } + } + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/regression/destructuring-in-function-type/options.json b/packages/babel-parser/test/fixtures/typescript/regression/destructuring-in-function-type/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/regression/destructuring-in-function-type/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/regression/destructuring-in-function-type/output.json b/packages/babel-parser/test/fixtures/typescript/regression/destructuring-in-function-type/output.json index c7a987bc3f..907956f1f7 100644 --- a/packages/babel-parser/test/fixtures/typescript/regression/destructuring-in-function-type/output.json +++ b/packages/babel-parser/test/fixtures/typescript/regression/destructuring-in-function-type/output.json @@ -18,7 +18,7 @@ "typeAnnotation": { "type": "TSFunctionType", "start":14,"end":37,"loc":{"start":{"line":1,"column":14},"end":{"line":1,"column":37}}, - "parameters": [ + "params": [ { "type": "ObjectPattern", "start":15,"end":29,"loc":{"start":{"line":1,"column":15},"end":{"line":1,"column":29}}, @@ -54,7 +54,7 @@ } } ], - "typeAnnotation": { + "returnType": { "type": "TSTypeAnnotation", "start":31,"end":37,"loc":{"start":{"line":1,"column":31},"end":{"line":1,"column":37}}, "typeAnnotation": { @@ -75,7 +75,7 @@ "typeAnnotation": { "type": "TSFunctionType", "start":58,"end":75,"loc":{"start":{"line":3,"column":19},"end":{"line":3,"column":36}}, - "parameters": [ + "params": [ { "type": "ArrayPattern", "start":59,"end":67,"loc":{"start":{"line":3,"column":20},"end":{"line":3,"column":28}}, @@ -96,7 +96,7 @@ } } ], - "typeAnnotation": { + "returnType": { "type": "TSTypeAnnotation", "start":69,"end":75,"loc":{"start":{"line":3,"column":30},"end":{"line":3,"column":36}}, "typeAnnotation": { diff --git a/packages/babel-parser/test/fixtures/typescript/regression/issue-7742/output.json b/packages/babel-parser/test/fixtures/typescript/regression/issue-7742/output.json index ab9b0f495e..3d7bd48546 100644 --- a/packages/babel-parser/test/fixtures/typescript/regression/issue-7742/output.json +++ b/packages/babel-parser/test/fixtures/typescript/regression/issue-7742/output.json @@ -52,7 +52,7 @@ } ] }, - "parameters": [ + "params": [ { "type": "Identifier", "start":27,"end":33,"loc":{"start":{"line":2,"column":8},"end":{"line":2,"column":14},"identifierName":"bar"}, @@ -72,7 +72,7 @@ } } ], - "typeAnnotation": { + "returnType": { "type": "TSTypeAnnotation", "start":34,"end":37,"loc":{"start":{"line":2,"column":15},"end":{"line":2,"column":18}}, "typeAnnotation": { diff --git a/packages/babel-parser/test/fixtures/typescript/tsx/type-parameters/output.json b/packages/babel-parser/test/fixtures/typescript/tsx/type-parameters/output.json index 31b54c353d..3cca062dca 100644 --- a/packages/babel-parser/test/fixtures/typescript/tsx/type-parameters/output.json +++ b/packages/babel-parser/test/fixtures/typescript/tsx/type-parameters/output.json @@ -39,8 +39,8 @@ } ] }, - "parameters": [], - "typeAnnotation": { + "params": [], + "returnType": { "type": "TSTypeAnnotation", "start":20,"end":29,"loc":{"start":{"line":1,"column":20},"end":{"line":1,"column":29}}, "typeAnnotation": { diff --git a/packages/babel-parser/test/fixtures/typescript/types/abstract-constructor-signatures-babel-7/input.ts b/packages/babel-parser/test/fixtures/typescript/types/abstract-constructor-signatures-babel-7/input.ts new file mode 100644 index 0000000000..a97259f968 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/abstract-constructor-signatures-babel-7/input.ts @@ -0,0 +1 @@ +let x: abstract new () => void = X; diff --git a/packages/babel-parser/test/fixtures/typescript/types/abstract-constructor-signatures-babel-7/options.json b/packages/babel-parser/test/fixtures/typescript/types/abstract-constructor-signatures-babel-7/options.json new file mode 100644 index 0000000000..29a3f0e841 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/abstract-constructor-signatures-babel-7/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": false +} diff --git a/packages/babel-parser/test/fixtures/typescript/types/abstract-constructor-signatures-babel-7/output.json b/packages/babel-parser/test/fixtures/typescript/types/abstract-constructor-signatures-babel-7/output.json new file mode 100644 index 0000000000..a64414ea89 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/abstract-constructor-signatures-babel-7/output.json @@ -0,0 +1,52 @@ +{ + "type": "File", + "start":0,"end":35,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":35}}, + "program": { + "type": "Program", + "start":0,"end":35,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":35}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "VariableDeclaration", + "start":0,"end":35,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":35}}, + "declarations": [ + { + "type": "VariableDeclarator", + "start":4,"end":34,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":34}}, + "id": { + "type": "Identifier", + "start":4,"end":30,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":30},"identifierName":"x"}, + "name": "x", + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":5,"end":30,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":30}}, + "typeAnnotation": { + "type": "TSConstructorType", + "start":7,"end":30,"loc":{"start":{"line":1,"column":7},"end":{"line":1,"column":30}}, + "abstract": true, + "parameters": [], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":23,"end":30,"loc":{"start":{"line":1,"column":23},"end":{"line":1,"column":30}}, + "typeAnnotation": { + "type": "TSVoidKeyword", + "start":26,"end":30,"loc":{"start":{"line":1,"column":26},"end":{"line":1,"column":30}} + } + } + } + } + }, + "init": { + "type": "Identifier", + "start":33,"end":34,"loc":{"start":{"line":1,"column":33},"end":{"line":1,"column":34},"identifierName":"X"}, + "name": "X" + } + } + ], + "kind": "let" + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/types/abstract-constructor-signatures/options.json b/packages/babel-parser/test/fixtures/typescript/types/abstract-constructor-signatures/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/abstract-constructor-signatures/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/types/abstract-constructor-signatures/output.json b/packages/babel-parser/test/fixtures/typescript/types/abstract-constructor-signatures/output.json index a64414ea89..61dc46c70f 100644 --- a/packages/babel-parser/test/fixtures/typescript/types/abstract-constructor-signatures/output.json +++ b/packages/babel-parser/test/fixtures/typescript/types/abstract-constructor-signatures/output.json @@ -25,8 +25,8 @@ "type": "TSConstructorType", "start":7,"end":30,"loc":{"start":{"line":1,"column":7},"end":{"line":1,"column":30}}, "abstract": true, - "parameters": [], - "typeAnnotation": { + "params": [], + "returnType": { "type": "TSTypeAnnotation", "start":23,"end":30,"loc":{"start":{"line":1,"column":23},"end":{"line":1,"column":30}}, "typeAnnotation": { diff --git a/packages/babel-parser/test/fixtures/typescript/types/constructor-signatures-babel-7/input.ts b/packages/babel-parser/test/fixtures/typescript/types/constructor-signatures-babel-7/input.ts new file mode 100644 index 0000000000..64ed0e7cdc --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/constructor-signatures-babel-7/input.ts @@ -0,0 +1 @@ +let x: new () => void = X; diff --git a/packages/babel-parser/test/fixtures/typescript/types/constructor-signatures-babel-7/options.json b/packages/babel-parser/test/fixtures/typescript/types/constructor-signatures-babel-7/options.json new file mode 100644 index 0000000000..29a3f0e841 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/constructor-signatures-babel-7/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": false +} diff --git a/packages/babel-parser/test/fixtures/typescript/types/constructor-signatures-babel-7/output.json b/packages/babel-parser/test/fixtures/typescript/types/constructor-signatures-babel-7/output.json new file mode 100644 index 0000000000..e616d85503 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/constructor-signatures-babel-7/output.json @@ -0,0 +1,52 @@ +{ + "type": "File", + "start":0,"end":26,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":26}}, + "program": { + "type": "Program", + "start":0,"end":26,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":26}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "VariableDeclaration", + "start":0,"end":26,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":26}}, + "declarations": [ + { + "type": "VariableDeclarator", + "start":4,"end":25,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":25}}, + "id": { + "type": "Identifier", + "start":4,"end":21,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":21},"identifierName":"x"}, + "name": "x", + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":5,"end":21,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":21}}, + "typeAnnotation": { + "type": "TSConstructorType", + "start":7,"end":21,"loc":{"start":{"line":1,"column":7},"end":{"line":1,"column":21}}, + "abstract": false, + "parameters": [], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":14,"end":21,"loc":{"start":{"line":1,"column":14},"end":{"line":1,"column":21}}, + "typeAnnotation": { + "type": "TSVoidKeyword", + "start":17,"end":21,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":21}} + } + } + } + } + }, + "init": { + "type": "Identifier", + "start":24,"end":25,"loc":{"start":{"line":1,"column":24},"end":{"line":1,"column":25},"identifierName":"X"}, + "name": "X" + } + } + ], + "kind": "let" + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/types/constructor-signatures/options.json b/packages/babel-parser/test/fixtures/typescript/types/constructor-signatures/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/constructor-signatures/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/types/constructor-signatures/output.json b/packages/babel-parser/test/fixtures/typescript/types/constructor-signatures/output.json index e616d85503..d56851cb41 100644 --- a/packages/babel-parser/test/fixtures/typescript/types/constructor-signatures/output.json +++ b/packages/babel-parser/test/fixtures/typescript/types/constructor-signatures/output.json @@ -25,8 +25,8 @@ "type": "TSConstructorType", "start":7,"end":21,"loc":{"start":{"line":1,"column":7},"end":{"line":1,"column":21}}, "abstract": false, - "parameters": [], - "typeAnnotation": { + "params": [], + "returnType": { "type": "TSTypeAnnotation", "start":14,"end":21,"loc":{"start":{"line":1,"column":14},"end":{"line":1,"column":21}}, "typeAnnotation": { diff --git a/packages/babel-parser/test/fixtures/typescript/types/function-babel-7/input.ts b/packages/babel-parser/test/fixtures/typescript/types/function-babel-7/input.ts new file mode 100644 index 0000000000..15173a1b65 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/function-babel-7/input.ts @@ -0,0 +1 @@ +let f: (a: number, b?: number, ...c: number[]) => void; diff --git a/packages/babel-parser/test/fixtures/typescript/types/function-babel-7/options.json b/packages/babel-parser/test/fixtures/typescript/types/function-babel-7/options.json new file mode 100644 index 0000000000..29a3f0e841 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/function-babel-7/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": false +} diff --git a/packages/babel-parser/test/fixtures/typescript/types/function-babel-7/output.json b/packages/babel-parser/test/fixtures/typescript/types/function-babel-7/output.json new file mode 100644 index 0000000000..454bedceab --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/function-babel-7/output.json @@ -0,0 +1,96 @@ +{ + "type": "File", + "start":0,"end":55,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":55}}, + "program": { + "type": "Program", + "start":0,"end":55,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":55}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "VariableDeclaration", + "start":0,"end":55,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":55}}, + "declarations": [ + { + "type": "VariableDeclarator", + "start":4,"end":54,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":54}}, + "id": { + "type": "Identifier", + "start":4,"end":54,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":54},"identifierName":"f"}, + "name": "f", + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":5,"end":54,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":54}}, + "typeAnnotation": { + "type": "TSFunctionType", + "start":7,"end":54,"loc":{"start":{"line":1,"column":7},"end":{"line":1,"column":54}}, + "parameters": [ + { + "type": "Identifier", + "start":8,"end":17,"loc":{"start":{"line":1,"column":8},"end":{"line":1,"column":17},"identifierName":"a"}, + "name": "a", + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":9,"end":17,"loc":{"start":{"line":1,"column":9},"end":{"line":1,"column":17}}, + "typeAnnotation": { + "type": "TSNumberKeyword", + "start":11,"end":17,"loc":{"start":{"line":1,"column":11},"end":{"line":1,"column":17}} + } + } + }, + { + "type": "Identifier", + "start":19,"end":29,"loc":{"start":{"line":1,"column":19},"end":{"line":1,"column":29},"identifierName":"b"}, + "name": "b", + "optional": true, + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":21,"end":29,"loc":{"start":{"line":1,"column":21},"end":{"line":1,"column":29}}, + "typeAnnotation": { + "type": "TSNumberKeyword", + "start":23,"end":29,"loc":{"start":{"line":1,"column":23},"end":{"line":1,"column":29}} + } + } + }, + { + "type": "RestElement", + "start":31,"end":45,"loc":{"start":{"line":1,"column":31},"end":{"line":1,"column":45}}, + "argument": { + "type": "Identifier", + "start":34,"end":35,"loc":{"start":{"line":1,"column":34},"end":{"line":1,"column":35},"identifierName":"c"}, + "name": "c" + }, + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":35,"end":45,"loc":{"start":{"line":1,"column":35},"end":{"line":1,"column":45}}, + "typeAnnotation": { + "type": "TSArrayType", + "start":37,"end":45,"loc":{"start":{"line":1,"column":37},"end":{"line":1,"column":45}}, + "elementType": { + "type": "TSNumberKeyword", + "start":37,"end":43,"loc":{"start":{"line":1,"column":37},"end":{"line":1,"column":43}} + } + } + } + } + ], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":47,"end":54,"loc":{"start":{"line":1,"column":47},"end":{"line":1,"column":54}}, + "typeAnnotation": { + "type": "TSVoidKeyword", + "start":50,"end":54,"loc":{"start":{"line":1,"column":50},"end":{"line":1,"column":54}} + } + } + } + } + }, + "init": null + } + ], + "kind": "let" + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/types/function-generic/output.json b/packages/babel-parser/test/fixtures/typescript/types/function-generic/output.json index 4233036c87..39fe05baf8 100644 --- a/packages/babel-parser/test/fixtures/typescript/types/function-generic/output.json +++ b/packages/babel-parser/test/fixtures/typescript/types/function-generic/output.json @@ -39,7 +39,7 @@ } ] }, - "parameters": [ + "params": [ { "type": "Identifier", "start":11,"end":15,"loc":{"start":{"line":1,"column":11},"end":{"line":1,"column":15},"identifierName":"a"}, @@ -59,7 +59,7 @@ } } ], - "typeAnnotation": { + "returnType": { "type": "TSTypeAnnotation", "start":17,"end":21,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":21}}, "typeAnnotation": { diff --git a/packages/babel-parser/test/fixtures/typescript/types/function-in-generic-babel-7/input.ts b/packages/babel-parser/test/fixtures/typescript/types/function-in-generic-babel-7/input.ts new file mode 100644 index 0000000000..6b9a571a7c --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/function-in-generic-babel-7/input.ts @@ -0,0 +1 @@ +let x: Array<() => void>; diff --git a/packages/babel-parser/test/fixtures/typescript/types/function-in-generic-babel-7/options.json b/packages/babel-parser/test/fixtures/typescript/types/function-in-generic-babel-7/options.json new file mode 100644 index 0000000000..29a3f0e841 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/function-in-generic-babel-7/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": false +} diff --git a/packages/babel-parser/test/fixtures/typescript/types/function-in-generic-babel-7/output.json b/packages/babel-parser/test/fixtures/typescript/types/function-in-generic-babel-7/output.json new file mode 100644 index 0000000000..9a7acd6e59 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/function-in-generic-babel-7/output.json @@ -0,0 +1,62 @@ +{ + "type": "File", + "start":0,"end":25,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":25}}, + "program": { + "type": "Program", + "start":0,"end":25,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":25}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "VariableDeclaration", + "start":0,"end":25,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":25}}, + "declarations": [ + { + "type": "VariableDeclarator", + "start":4,"end":24,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":24}}, + "id": { + "type": "Identifier", + "start":4,"end":24,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":24},"identifierName":"x"}, + "name": "x", + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":5,"end":24,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":24}}, + "typeAnnotation": { + "type": "TSTypeReference", + "start":7,"end":24,"loc":{"start":{"line":1,"column":7},"end":{"line":1,"column":24}}, + "typeName": { + "type": "Identifier", + "start":7,"end":12,"loc":{"start":{"line":1,"column":7},"end":{"line":1,"column":12},"identifierName":"Array"}, + "name": "Array" + }, + "typeParameters": { + "type": "TSTypeParameterInstantiation", + "start":12,"end":24,"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":24}}, + "params": [ + { + "type": "TSFunctionType", + "start":13,"end":23,"loc":{"start":{"line":1,"column":13},"end":{"line":1,"column":23}}, + "parameters": [], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":16,"end":23,"loc":{"start":{"line":1,"column":16},"end":{"line":1,"column":23}}, + "typeAnnotation": { + "type": "TSVoidKeyword", + "start":19,"end":23,"loc":{"start":{"line":1,"column":19},"end":{"line":1,"column":23}} + } + } + } + ] + } + } + } + }, + "init": null + } + ], + "kind": "let" + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/types/function-in-generic/options.json b/packages/babel-parser/test/fixtures/typescript/types/function-in-generic/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/function-in-generic/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/types/function-in-generic/output.json b/packages/babel-parser/test/fixtures/typescript/types/function-in-generic/output.json index 9a7acd6e59..f603654139 100644 --- a/packages/babel-parser/test/fixtures/typescript/types/function-in-generic/output.json +++ b/packages/babel-parser/test/fixtures/typescript/types/function-in-generic/output.json @@ -36,8 +36,8 @@ { "type": "TSFunctionType", "start":13,"end":23,"loc":{"start":{"line":1,"column":13},"end":{"line":1,"column":23}}, - "parameters": [], - "typeAnnotation": { + "params": [], + "returnType": { "type": "TSTypeAnnotation", "start":16,"end":23,"loc":{"start":{"line":1,"column":16},"end":{"line":1,"column":23}}, "typeAnnotation": { diff --git a/packages/babel-parser/test/fixtures/typescript/types/function-with-this-babel-7/input.ts b/packages/babel-parser/test/fixtures/typescript/types/function-with-this-babel-7/input.ts new file mode 100644 index 0000000000..cd13ed098d --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/function-with-this-babel-7/input.ts @@ -0,0 +1 @@ +let f: (this: number) => void; diff --git a/packages/babel-parser/test/fixtures/typescript/types/function-with-this-babel-7/options.json b/packages/babel-parser/test/fixtures/typescript/types/function-with-this-babel-7/options.json new file mode 100644 index 0000000000..29a3f0e841 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/function-with-this-babel-7/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": false +} diff --git a/packages/babel-parser/test/fixtures/typescript/types/function-with-this-babel-7/output.json b/packages/babel-parser/test/fixtures/typescript/types/function-with-this-babel-7/output.json new file mode 100644 index 0000000000..cae696cfb5 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/function-with-this-babel-7/output.json @@ -0,0 +1,61 @@ +{ + "type": "File", + "start":0,"end":30,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":30}}, + "program": { + "type": "Program", + "start":0,"end":30,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":30}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "VariableDeclaration", + "start":0,"end":30,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":30}}, + "declarations": [ + { + "type": "VariableDeclarator", + "start":4,"end":29,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":29}}, + "id": { + "type": "Identifier", + "start":4,"end":29,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":29},"identifierName":"f"}, + "name": "f", + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":5,"end":29,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":29}}, + "typeAnnotation": { + "type": "TSFunctionType", + "start":7,"end":29,"loc":{"start":{"line":1,"column":7},"end":{"line":1,"column":29}}, + "parameters": [ + { + "type": "Identifier", + "start":8,"end":20,"loc":{"start":{"line":1,"column":8},"end":{"line":1,"column":20},"identifierName":"this"}, + "name": "this", + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":12,"end":20,"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":20}}, + "typeAnnotation": { + "type": "TSNumberKeyword", + "start":14,"end":20,"loc":{"start":{"line":1,"column":14},"end":{"line":1,"column":20}} + } + } + } + ], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":22,"end":29,"loc":{"start":{"line":1,"column":22},"end":{"line":1,"column":29}}, + "typeAnnotation": { + "type": "TSVoidKeyword", + "start":25,"end":29,"loc":{"start":{"line":1,"column":25},"end":{"line":1,"column":29}} + } + } + } + } + }, + "init": null + } + ], + "kind": "let" + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/types/function-with-this/options.json b/packages/babel-parser/test/fixtures/typescript/types/function-with-this/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/function-with-this/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/types/function-with-this/output.json b/packages/babel-parser/test/fixtures/typescript/types/function-with-this/output.json index cae696cfb5..173d2bdf2f 100644 --- a/packages/babel-parser/test/fixtures/typescript/types/function-with-this/output.json +++ b/packages/babel-parser/test/fixtures/typescript/types/function-with-this/output.json @@ -24,7 +24,7 @@ "typeAnnotation": { "type": "TSFunctionType", "start":7,"end":29,"loc":{"start":{"line":1,"column":7},"end":{"line":1,"column":29}}, - "parameters": [ + "params": [ { "type": "Identifier", "start":8,"end":20,"loc":{"start":{"line":1,"column":8},"end":{"line":1,"column":20},"identifierName":"this"}, @@ -39,7 +39,7 @@ } } ], - "typeAnnotation": { + "returnType": { "type": "TSTypeAnnotation", "start":22,"end":29,"loc":{"start":{"line":1,"column":22},"end":{"line":1,"column":29}}, "typeAnnotation": { diff --git a/packages/babel-parser/test/fixtures/typescript/types/function/options.json b/packages/babel-parser/test/fixtures/typescript/types/function/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/function/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/types/function/output.json b/packages/babel-parser/test/fixtures/typescript/types/function/output.json index 454bedceab..31b619bc37 100644 --- a/packages/babel-parser/test/fixtures/typescript/types/function/output.json +++ b/packages/babel-parser/test/fixtures/typescript/types/function/output.json @@ -24,7 +24,7 @@ "typeAnnotation": { "type": "TSFunctionType", "start":7,"end":54,"loc":{"start":{"line":1,"column":7},"end":{"line":1,"column":54}}, - "parameters": [ + "params": [ { "type": "Identifier", "start":8,"end":17,"loc":{"start":{"line":1,"column":8},"end":{"line":1,"column":17},"identifierName":"a"}, @@ -74,7 +74,7 @@ } } ], - "typeAnnotation": { + "returnType": { "type": "TSTypeAnnotation", "start":47,"end":54,"loc":{"start":{"line":1,"column":47},"end":{"line":1,"column":54}}, "typeAnnotation": { diff --git a/packages/babel-parser/test/fixtures/typescript/types/pattern-parameters-babel-7/input.ts b/packages/babel-parser/test/fixtures/typescript/types/pattern-parameters-babel-7/input.ts new file mode 100644 index 0000000000..6880a5bff2 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/pattern-parameters-babel-7/input.ts @@ -0,0 +1,5 @@ +type C = { + foo([]?): void; + bar({}, []?): any; + baz(a: string, b: number, []?): void; +}; diff --git a/packages/babel-parser/test/fixtures/typescript/types/pattern-parameters-babel-7/options.json b/packages/babel-parser/test/fixtures/typescript/types/pattern-parameters-babel-7/options.json new file mode 100644 index 0000000000..29a3f0e841 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/pattern-parameters-babel-7/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": false +} diff --git a/packages/babel-parser/test/fixtures/typescript/types/pattern-parameters-babel-7/output.json b/packages/babel-parser/test/fixtures/typescript/types/pattern-parameters-babel-7/output.json new file mode 100644 index 0000000000..ad11ca49f7 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/pattern-parameters-babel-7/output.json @@ -0,0 +1,140 @@ +{ + "type": "File", + "start":0,"end":92,"loc":{"start":{"line":1,"column":0},"end":{"line":5,"column":2}}, + "program": { + "type": "Program", + "start":0,"end":92,"loc":{"start":{"line":1,"column":0},"end":{"line":5,"column":2}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSTypeAliasDeclaration", + "start":0,"end":92,"loc":{"start":{"line":1,"column":0},"end":{"line":5,"column":2}}, + "id": { + "type": "Identifier", + "start":5,"end":6,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":6},"identifierName":"C"}, + "name": "C" + }, + "typeAnnotation": { + "type": "TSTypeLiteral", + "start":9,"end":91,"loc":{"start":{"line":1,"column":9},"end":{"line":5,"column":1}}, + "members": [ + { + "type": "TSMethodSignature", + "start":13,"end":28,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":17}}, + "key": { + "type": "Identifier", + "start":13,"end":16,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":5},"identifierName":"foo"}, + "name": "foo" + }, + "computed": false, + "parameters": [ + { + "type": "ArrayPattern", + "start":17,"end":20,"loc":{"start":{"line":2,"column":6},"end":{"line":2,"column":9}}, + "elements": [], + "optional": true + } + ], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":21,"end":27,"loc":{"start":{"line":2,"column":10},"end":{"line":2,"column":16}}, + "typeAnnotation": { + "type": "TSVoidKeyword", + "start":23,"end":27,"loc":{"start":{"line":2,"column":12},"end":{"line":2,"column":16}} + } + }, + "kind": "method" + }, + { + "type": "TSMethodSignature", + "start":31,"end":49,"loc":{"start":{"line":3,"column":2},"end":{"line":3,"column":20}}, + "key": { + "type": "Identifier", + "start":31,"end":34,"loc":{"start":{"line":3,"column":2},"end":{"line":3,"column":5},"identifierName":"bar"}, + "name": "bar" + }, + "computed": false, + "parameters": [ + { + "type": "ObjectPattern", + "start":35,"end":37,"loc":{"start":{"line":3,"column":6},"end":{"line":3,"column":8}}, + "properties": [] + }, + { + "type": "ArrayPattern", + "start":39,"end":42,"loc":{"start":{"line":3,"column":10},"end":{"line":3,"column":13}}, + "elements": [], + "optional": true + } + ], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":43,"end":48,"loc":{"start":{"line":3,"column":14},"end":{"line":3,"column":19}}, + "typeAnnotation": { + "type": "TSAnyKeyword", + "start":45,"end":48,"loc":{"start":{"line":3,"column":16},"end":{"line":3,"column":19}} + } + }, + "kind": "method" + }, + { + "type": "TSMethodSignature", + "start":52,"end":89,"loc":{"start":{"line":4,"column":2},"end":{"line":4,"column":39}}, + "key": { + "type": "Identifier", + "start":52,"end":55,"loc":{"start":{"line":4,"column":2},"end":{"line":4,"column":5},"identifierName":"baz"}, + "name": "baz" + }, + "computed": false, + "parameters": [ + { + "type": "Identifier", + "start":56,"end":65,"loc":{"start":{"line":4,"column":6},"end":{"line":4,"column":15},"identifierName":"a"}, + "name": "a", + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":57,"end":65,"loc":{"start":{"line":4,"column":7},"end":{"line":4,"column":15}}, + "typeAnnotation": { + "type": "TSStringKeyword", + "start":59,"end":65,"loc":{"start":{"line":4,"column":9},"end":{"line":4,"column":15}} + } + } + }, + { + "type": "Identifier", + "start":67,"end":76,"loc":{"start":{"line":4,"column":17},"end":{"line":4,"column":26},"identifierName":"b"}, + "name": "b", + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":68,"end":76,"loc":{"start":{"line":4,"column":18},"end":{"line":4,"column":26}}, + "typeAnnotation": { + "type": "TSNumberKeyword", + "start":70,"end":76,"loc":{"start":{"line":4,"column":20},"end":{"line":4,"column":26}} + } + } + }, + { + "type": "ArrayPattern", + "start":78,"end":81,"loc":{"start":{"line":4,"column":28},"end":{"line":4,"column":31}}, + "elements": [], + "optional": true + } + ], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":82,"end":88,"loc":{"start":{"line":4,"column":32},"end":{"line":4,"column":38}}, + "typeAnnotation": { + "type": "TSVoidKeyword", + "start":84,"end":88,"loc":{"start":{"line":4,"column":34},"end":{"line":4,"column":38}} + } + }, + "kind": "method" + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/types/pattern-parameters/options.json b/packages/babel-parser/test/fixtures/typescript/types/pattern-parameters/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/pattern-parameters/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/types/pattern-parameters/output.json b/packages/babel-parser/test/fixtures/typescript/types/pattern-parameters/output.json index ad11ca49f7..a252a31410 100644 --- a/packages/babel-parser/test/fixtures/typescript/types/pattern-parameters/output.json +++ b/packages/babel-parser/test/fixtures/typescript/types/pattern-parameters/output.json @@ -28,7 +28,7 @@ "name": "foo" }, "computed": false, - "parameters": [ + "params": [ { "type": "ArrayPattern", "start":17,"end":20,"loc":{"start":{"line":2,"column":6},"end":{"line":2,"column":9}}, @@ -36,7 +36,7 @@ "optional": true } ], - "typeAnnotation": { + "returnType": { "type": "TSTypeAnnotation", "start":21,"end":27,"loc":{"start":{"line":2,"column":10},"end":{"line":2,"column":16}}, "typeAnnotation": { @@ -55,7 +55,7 @@ "name": "bar" }, "computed": false, - "parameters": [ + "params": [ { "type": "ObjectPattern", "start":35,"end":37,"loc":{"start":{"line":3,"column":6},"end":{"line":3,"column":8}}, @@ -68,7 +68,7 @@ "optional": true } ], - "typeAnnotation": { + "returnType": { "type": "TSTypeAnnotation", "start":43,"end":48,"loc":{"start":{"line":3,"column":14},"end":{"line":3,"column":19}}, "typeAnnotation": { @@ -87,7 +87,7 @@ "name": "baz" }, "computed": false, - "parameters": [ + "params": [ { "type": "Identifier", "start":56,"end":65,"loc":{"start":{"line":4,"column":6},"end":{"line":4,"column":15},"identifierName":"a"}, @@ -121,7 +121,7 @@ "optional": true } ], - "typeAnnotation": { + "returnType": { "type": "TSTypeAnnotation", "start":82,"end":88,"loc":{"start":{"line":4,"column":32},"end":{"line":4,"column":38}}, "typeAnnotation": { diff --git a/packages/babel-parser/test/fixtures/typescript/types/type-literal-get-set-babel-7/input.ts b/packages/babel-parser/test/fixtures/typescript/types/type-literal-get-set-babel-7/input.ts new file mode 100644 index 0000000000..a3a21e03ca --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/type-literal-get-set-babel-7/input.ts @@ -0,0 +1,4 @@ +var obj: { + get foo(): string; + set bar(v); +}; diff --git a/packages/babel-parser/test/fixtures/typescript/types/type-literal-get-set-babel-7/options.json b/packages/babel-parser/test/fixtures/typescript/types/type-literal-get-set-babel-7/options.json new file mode 100644 index 0000000000..29a3f0e841 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/type-literal-get-set-babel-7/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": false +} diff --git a/packages/babel-parser/test/fixtures/typescript/types/type-literal-get-set-babel-7/output.json b/packages/babel-parser/test/fixtures/typescript/types/type-literal-get-set-babel-7/output.json new file mode 100644 index 0000000000..1709b69d53 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/type-literal-get-set-babel-7/output.json @@ -0,0 +1,78 @@ +{ + "type": "File", + "start":0,"end":48,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":2}}, + "program": { + "type": "Program", + "start":0,"end":48,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":2}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "VariableDeclaration", + "start":0,"end":48,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":2}}, + "declarations": [ + { + "type": "VariableDeclarator", + "start":4,"end":47,"loc":{"start":{"line":1,"column":4},"end":{"line":4,"column":1}}, + "id": { + "type": "Identifier", + "start":4,"end":47,"loc":{"start":{"line":1,"column":4},"end":{"line":4,"column":1},"identifierName":"obj"}, + "name": "obj", + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":7,"end":47,"loc":{"start":{"line":1,"column":7},"end":{"line":4,"column":1}}, + "typeAnnotation": { + "type": "TSTypeLiteral", + "start":9,"end":47,"loc":{"start":{"line":1,"column":9},"end":{"line":4,"column":1}}, + "members": [ + { + "type": "TSMethodSignature", + "start":13,"end":31,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":20}}, + "kind": "get", + "key": { + "type": "Identifier", + "start":17,"end":20,"loc":{"start":{"line":2,"column":6},"end":{"line":2,"column":9},"identifierName":"foo"}, + "name": "foo" + }, + "computed": false, + "parameters": [], + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":22,"end":30,"loc":{"start":{"line":2,"column":11},"end":{"line":2,"column":19}}, + "typeAnnotation": { + "type": "TSStringKeyword", + "start":24,"end":30,"loc":{"start":{"line":2,"column":13},"end":{"line":2,"column":19}} + } + } + }, + { + "type": "TSMethodSignature", + "start":34,"end":45,"loc":{"start":{"line":3,"column":2},"end":{"line":3,"column":13}}, + "kind": "set", + "key": { + "type": "Identifier", + "start":38,"end":41,"loc":{"start":{"line":3,"column":6},"end":{"line":3,"column":9},"identifierName":"bar"}, + "name": "bar" + }, + "computed": false, + "parameters": [ + { + "type": "Identifier", + "start":42,"end":43,"loc":{"start":{"line":3,"column":10},"end":{"line":3,"column":11},"identifierName":"v"}, + "name": "v" + } + ] + } + ] + } + } + }, + "init": null + } + ], + "kind": "var" + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/types/type-literal-get-set/options.json b/packages/babel-parser/test/fixtures/typescript/types/type-literal-get-set/options.json new file mode 100644 index 0000000000..cbf6d15954 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/type-literal-get-set/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-parser/test/fixtures/typescript/types/type-literal-get-set/output.json b/packages/babel-parser/test/fixtures/typescript/types/type-literal-get-set/output.json index 1f3d7b8a71..d6a9999ce8 100644 --- a/packages/babel-parser/test/fixtures/typescript/types/type-literal-get-set/output.json +++ b/packages/babel-parser/test/fixtures/typescript/types/type-literal-get-set/output.json @@ -35,8 +35,8 @@ }, "computed": false, "kind": "get", - "parameters": [], - "typeAnnotation": { + "params": [], + "returnType": { "type": "TSTypeAnnotation", "start":22,"end":30,"loc":{"start":{"line":2,"column":11},"end":{"line":2,"column":19}}, "typeAnnotation": { @@ -55,7 +55,7 @@ }, "computed": false, "kind": "set", - "parameters": [ + "params": [ { "type": "Identifier", "start":42,"end":43,"loc":{"start":{"line":3,"column":10},"end":{"line":3,"column":11},"identifierName":"v"}, diff --git a/packages/babel-types/src/definitions/typescript.ts b/packages/babel-types/src/definitions/typescript.ts index 373f4a6757..42dcf6accd 100644 --- a/packages/babel-types/src/definitions/typescript.ts +++ b/packages/babel-types/src/definitions/typescript.ts @@ -94,13 +94,20 @@ defineType("TSQualifiedName", { const signatureDeclarationCommon = { typeParameters: validateOptionalType("TSTypeParameterDeclaration"), - parameters: validateArrayOfType(["Identifier", "RestElement"]), - typeAnnotation: validateOptionalType("TSTypeAnnotation"), + [process.env.BABEL_8_BREAKING ? "params" : "parameters"]: validateArrayOfType( + ["Identifier", "RestElement"], + ), + [process.env.BABEL_8_BREAKING ? "returnType" : "typeAnnotation"]: + validateOptionalType("TSTypeAnnotation"), }; const callConstructSignatureDeclaration = { aliases: ["TSTypeElement"], - visitor: ["typeParameters", "parameters", "typeAnnotation"], + visitor: [ + "typeParameters", + process.env.BABEL_8_BREAKING ? "params" : "parameters", + process.env.BABEL_8_BREAKING ? "returnType" : "typeAnnotation", + ], fields: signatureDeclarationCommon, }; @@ -132,7 +139,12 @@ defineType("TSPropertySignature", { defineType("TSMethodSignature", { aliases: ["TSTypeElement"], - visitor: ["key", "typeParameters", "parameters", "typeAnnotation"], + visitor: [ + "key", + "typeParameters", + process.env.BABEL_8_BREAKING ? "params" : "parameters", + process.env.BABEL_8_BREAKING ? "returnType" : "typeAnnotation", + ], fields: { ...signatureDeclarationCommon, ...namedTypeElementCommon, @@ -185,7 +197,11 @@ defineType("TSThisType", { const fnOrCtrBase = { aliases: ["TSType"], - visitor: ["typeParameters", "parameters", "typeAnnotation"], + visitor: [ + "typeParameters", + process.env.BABEL_8_BREAKING ? "params" : "parameters", + process.env.BABEL_8_BREAKING ? "returnType" : "typeAnnotation", + ], }; defineType("TSFunctionType", { diff --git a/packages/babel-types/test/fields.js b/packages/babel-types/test/fields.js index 90961df748..6211c6caf2 100644 --- a/packages/babel-types/test/fields.js +++ b/packages/babel-types/test/fields.js @@ -52,6 +52,24 @@ const ignoredFields = { ObjectMethod: { method: true, id: true, predicate: true }, StaticBlock: { static: true }, TSDeclareMethod: { id: true }, + ...(process.env.BABEL_8_BREAKING + ? { + TSFunctionType: { parameters: true, typeAnnotation: true }, + TSMethodSignature: { parameters: true, typeAnnotation: true }, + TSConstructorType: { parameters: true, typeAnnotation: true }, + TSCallSignatureDeclaration: { parameters: true, typeAnnotation: true }, + TSConstructSignatureDeclaration: { + parameters: true, + typeAnnotation: true, + }, + } + : { + TSFunctionType: { params: true, returnType: true }, + TSMethodSignature: { params: true, returnType: true }, + TSConstructorType: { params: true, returnType: true }, + TSCallSignatureDeclaration: { params: true, returnType: true }, + TSConstructSignatureDeclaration: { params: true, returnType: true }, + }), }; function isEmpty(obj) {