diff --git a/packages/babel-generator/src/generators/classes.js b/packages/babel-generator/src/generators/classes.js index 63cc938f96..55bfdbe282 100644 --- a/packages/babel-generator/src/generators/classes.js +++ b/packages/babel-generator/src/generators/classes.js @@ -8,6 +8,16 @@ export function ClassDeclaration(node: Object, parent: Object) { this.printJoin(node.decorators, node); } + if (node.declare) { + this.word("declare"); + this.space(); + } + + if (node.abstract) { + this.word("abstract"); + this.space(); + } + this.word("class"); if (node.id) { @@ -59,10 +69,22 @@ export function ClassBody(node: Object) { export function ClassProperty(node: Object) { this.printJoin(node.decorators, node); + if (node.accessibility) { + this.word(node.accessibility); + this.space(); + } if (node.static) { this.word("static"); this.space(); } + if (node.abstract) { + this.word("abstract"); + this.space(); + } + if (node.readonly) { + this.word("readonly"); + this.space(); + } if (node.computed) { this.token("["); this.print(node.key, node); @@ -71,6 +93,11 @@ export function ClassProperty(node: Object) { this._variance(node); this.print(node.key, node); } + + if (node.optional) { + this.token("?"); + } + this.print(node.typeAnnotation, node); if (node.value) { this.space(); @@ -82,12 +109,28 @@ export function ClassProperty(node: Object) { } export function ClassMethod(node: Object) { + this._classMethodHead(node); + this.space(); + this.print(node.body, node); +} + +export function _classMethodHead(node) { this.printJoin(node.decorators, node); + if (node.accessibility) { + this.word(node.accessibility); + this.space(); + } + + if (node.abstract) { + this.word("abstract"); + this.space(); + } + if (node.static) { this.word("static"); this.space(); } - this._method(node); + this._methodHead(node); } diff --git a/packages/babel-generator/src/generators/expressions.js b/packages/babel-generator/src/generators/expressions.js index b7e55a395f..cd5f6692b9 100644 --- a/packages/babel-generator/src/generators/expressions.js +++ b/packages/babel-generator/src/generators/expressions.js @@ -65,6 +65,8 @@ export function NewExpression(node: Object, parent: Object) { return; } + this.print(node.typeParameters, node); + if (node.optional) { this.token("?."); } @@ -94,6 +96,8 @@ export function Decorator(node: Object) { export function CallExpression(node: Object) { this.print(node.callee, node); + this.print(node.typeParameters, node); + if (node.optional) { this.token("?."); } diff --git a/packages/babel-generator/src/generators/flow.js b/packages/babel-generator/src/generators/flow.js index 6532f18f79..be78c2660f 100644 --- a/packages/babel-generator/src/generators/flow.js +++ b/packages/babel-generator/src/generators/flow.js @@ -303,38 +303,6 @@ export function TypeAlias(node: Object) { this.semicolon(); } -export function TypeAnnotation(node: Object) { - this.token(":"); - this.space(); - if (node.optional) this.token("?"); - this.print(node.typeAnnotation, node); -} - -export function TypeParameter(node: Object) { - this._variance(node); - - this.word(node.name); - - if (node.bound) { - this.print(node.bound, node); - } - - if (node.default) { - this.space(); - this.token("="); - this.space(); - this.print(node.default, node); - } -} - -export function TypeParameterInstantiation(node: Object) { - this.token("<"); - this.printList(node.params, node, {}); - this.token(">"); -} - -export { TypeParameterInstantiation as TypeParameterDeclaration }; - export function ObjectTypeAnnotation(node: Object) { if (node.exact) { this.token("{|"); diff --git a/packages/babel-generator/src/generators/index.js b/packages/babel-generator/src/generators/index.js index 61db3d68ec..f763a7e683 100644 --- a/packages/babel-generator/src/generators/index.js +++ b/packages/babel-generator/src/generators/index.js @@ -8,3 +8,5 @@ export * from "./types"; export * from "./flow"; export * from "./base"; export * from "./jsx"; +export * from "./tsFlowCommon"; +export * from "./typescript"; diff --git a/packages/babel-generator/src/generators/methods.js b/packages/babel-generator/src/generators/methods.js index f235e30420..e7222e874c 100644 --- a/packages/babel-generator/src/generators/methods.js +++ b/packages/babel-generator/src/generators/methods.js @@ -3,20 +3,31 @@ import * as t from "babel-types"; export function _params(node: Object) { this.print(node.typeParameters, node); this.token("("); - this.printList(node.params, node, { - iterator: node => { - if (node.optional) this.token("?"); - this.print(node.typeAnnotation, node); - }, - }); + this._parameters(node.params, node); this.token(")"); - if (node.returnType) { - this.print(node.returnType, node); + this.print(node.returnType, node); +} + +export function _parameters(parameters, parent) { + for (let i = 0; i < parameters.length; i++) { + this._param(parameters[i], parent); + + if (i < parameters.length - 1) { + this.token(","); + this.space(); + } } } -export function _method(node: Object) { +export function _param(parameter, parent) { + this.printJoin(parameter.decorators, parameter); + this.print(parameter, parent); + if (parameter.optional) this.token("?"); + this.print(parameter.typeAnnotation, parameter); +} + +export function _methodHead(node: Object) { const kind = node.kind; const key = node.key; @@ -44,9 +55,11 @@ export function _method(node: Object) { this.print(key, node); } + if (node.optional) { + this.token("?"); + } + this._params(node); - this.space(); - this.print(node.body, node); } export function _predicate(node: Object) { @@ -59,7 +72,7 @@ export function _predicate(node: Object) { } } -export function FunctionExpression(node: Object) { +export function _functionHead(node: Object) { if (node.async) { this.word("async"); this.space(); @@ -67,16 +80,17 @@ export function FunctionExpression(node: Object) { this.word("function"); if (node.generator) this.token("*"); + this.space(); if (node.id) { - this.space(); this.print(node.id, node); - } else { - this.space(); } this._params(node); this._predicate(node); +} +export function FunctionExpression(node: Object) { + this._functionHead(node); this.space(); this.print(node.body, node); } diff --git a/packages/babel-generator/src/generators/statements.js b/packages/babel-generator/src/generators/statements.js index 29d914fbfc..f73ecd0315 100644 --- a/packages/babel-generator/src/generators/statements.js +++ b/packages/babel-generator/src/generators/statements.js @@ -236,6 +236,11 @@ function constDeclarationIndent() { } export function VariableDeclaration(node: Object, parent: Object) { + if (node.declare) { + this.word("declare"); + this.space(); + } + this.word(node.kind); this.space(); diff --git a/packages/babel-generator/src/generators/tsFlowCommon.js b/packages/babel-generator/src/generators/tsFlowCommon.js new file mode 100644 index 0000000000..4ccc2d2b40 --- /dev/null +++ b/packages/babel-generator/src/generators/tsFlowCommon.js @@ -0,0 +1,38 @@ +export function TypeAnnotation(node) { + this.token(":"); + this.space(); + if (node.optional) this.token("?"); + this.print(node.typeAnnotation, node); +} + +export function TypeParameterInstantiation(node): void { + this.token("<"); + this.printList(node.params, node, {}); + this.token(">"); +} + +export { TypeParameterInstantiation as TypeParameterDeclaration }; + +export function TypeParameter(node) { + this._variance(node); + + this.word(node.name); + + if (node.bound) { + this.print(node.bound, node); + } + + if (node.constraint) { + this.space(); + this.word("extends"); + this.space(); + this.print(node.constraint, node); + } + + if (node.default) { + this.space(); + this.token("="); + this.space(); + this.print(node.default, node); + } +} diff --git a/packages/babel-generator/src/generators/types.js b/packages/babel-generator/src/generators/types.js index 35724213d9..7da850ee55 100644 --- a/packages/babel-generator/src/generators/types.js +++ b/packages/babel-generator/src/generators/types.js @@ -31,7 +31,9 @@ export { ObjectExpression as ObjectPattern }; export function ObjectMethod(node: Object) { this.printJoin(node.decorators, node); - this._method(node); + this._methodHead(node); + this.space(); + this.print(node.body, node); } export function ObjectProperty(node: Object) { diff --git a/packages/babel-generator/src/generators/typescript.js b/packages/babel-generator/src/generators/typescript.js new file mode 100644 index 0000000000..8ae5030ebf --- /dev/null +++ b/packages/babel-generator/src/generators/typescript.js @@ -0,0 +1,456 @@ +export function TSParameterProperty(node) { + if (node.accessibility) { + this.word(node.accessibility); + this.space(); + } + + if (node.readonly) { + this.word("readonly"); + this.space(); + } + + this._param(node.parameter); +} + +export function TSDeclareFunction(node) { + if (node.declare) { + this.word("declare"); + this.space(); + } + this._functionHead(node); + this.token(";"); +} + +export function TSDeclareMethod(node) { + this._classMethodHead(node); + this.token(";"); +} + +export function TSQualifiedName(node) { + this.print(node.left, node); + this.token("."); + this.print(node.right, node); +} + +export function TSCallSignatureDeclaration(node) { + this.tsPrintSignatureDeclarationBase(node); +} + +export function TSConstructSignatureDeclaration(node) { + this.word("new"); + this.space(); + this.tsPrintSignatureDeclarationBase(node); +} + +export function TSPropertySignature(node) { + const { readonly, initializer } = node; + if (readonly) { + this.word("readonly"); + this.space(); + } + this.tsPrintPropertyOrMethodName(node); + this.print(node.typeAnnotation, node); + if (initializer) { + this.space(); + this.token("="); + this.space(); + this.print(initializer, node); + } + this.token(";"); +} + +export function tsPrintPropertyOrMethodName(node) { + if (node.computed) { + this.token("["); + } + this.print(node.key, node); + if (node.computed) { + this.token("]"); + } + if (node.optional) { + this.token("?"); + } +} + +export function TSMethodSignature(node) { + this.tsPrintPropertyOrMethodName(node); + this.tsPrintSignatureDeclarationBase(node); + this.token(";"); +} + +export function TSIndexSignature(node) { + const { readonly } = node; + if (readonly) { + this.word("readonly"); + this.space(); + } + this.token("["); + this._parameters(node.parameters, node); + this.token("]"); + this.print(node.typeAnnotation, node); + this.token(";"); +} + +export function TSAnyKeyword() { + this.word("any"); +} +export function TSNumberKeyword() { + this.word("number"); +} +export function TSObjectKeyword() { + this.word("object"); +} +export function TSBooleanKeyword() { + this.word("boolean"); +} +export function TSStringKeyword() { + this.word("string"); +} +export function TSSymbolKeyword() { + this.word("symbol"); +} +export function TSVoidKeyword() { + this.word("void"); +} +export function TSUndefinedKeyword() { + this.word("undefined"); +} +export function TSNullKeyword() { + this.word("null"); +} +export function TSNeverKeyword() { + this.word("never"); +} + +export function TSThisType() { + this.word("this"); +} + +export function TSFunctionType(node) { + this.tsPrintFunctionOrConstructorType(node); +} + +export function TSConstructorType(node) { + this.word("new"); + this.space(); + this.tsPrintFunctionOrConstructorType(node); +} + +export function tsPrintFunctionOrConstructorType( + node: FunctionOrConstructorType, +) { + const { typeParameters, parameters } = node; + this.print(typeParameters, node); + this.token("("); + this._parameters(parameters, node); + this.token(")"); + this.space(); + this.token("=>"); + this.space(); + this.print(node.typeAnnotation.typeAnnotation, node); +} + +export function TSTypeReference(node) { + this.print(node.typeName, node); + this.print(node.typeParameters, node); +} + +export function TSTypePredicate(node) { + this.print(node.parameterName); + this.space(); + this.word("is"); + this.space(); + this.print(node.typeAnnotation.typeAnnotation); +} + +export function TSTypeQuery(node) { + this.word("typeof"); + this.space(); + this.print(node.exprName); +} + +export function TSTypeLiteral(node) { + this.tsPrintTypeLiteralOrInterfaceBody(node.members, node); +} + +export function tsPrintTypeLiteralOrInterfaceBody(members, node) { + this.tsPrintBraced(members, node); +} + +export function tsPrintBraced(members, node) { + this.token("{"); + if (members.length) { + this.indent(); + this.newline(); + for (const member of members) { + this.print(member, node); + //this.token(sep); + this.newline(); + } + this.dedent(); + this.rightBrace(); + } else { + this.token("}"); + } +} + +export function TSArrayType(node) { + this.print(node.elementType); + this.token("[]"); +} + +export function TSTupleType(node) { + this.token("["); + this.printList(node.elementTypes, node); + this.token("]"); +} + +export function TSUnionType(node) { + this.tsPrintUnionOrIntersectionType(node, "|"); +} + +export function TSIntersectionType(node) { + this.tsPrintUnionOrIntersectionType(node, "&"); +} + +export function tsPrintUnionOrIntersectionType(node, sep) { + this.printJoin(node.types, node, { + separator() { + this.space(); + this.token(sep); + this.space(); + }, + }); +} + +export function TSParenthesizedType(node) { + this.token("("); + this.print(node.typeAnnotation, node); + this.token(")"); +} + +export function TSTypeOperator(node) { + this.token(node.operator); + this.space(); + this.print(node.typeAnnotation, node); +} + +export function TSIndexedAccessType(node) { + this.print(node.objectType, node); + this.token("["); + this.print(node.indexType, node); + this.token("]"); +} + +export function TSMappedType(node) { + const { readonly, typeParameter, optional } = node; + this.token("{"); + this.space(); + if (readonly) { + this.word("readonly"); + this.space(); + } + + this.token("["); + this.word(typeParameter.name); + this.space(); + this.word("in"); + this.space(); + this.print(typeParameter.constraint, typeParameter); + this.token("]"); + + if (optional) { + this.token("?"); + } + this.token(":"); + this.space(); + this.print(node.typeAnnotation, node); + this.space(); + this.token("}"); +} + +export function TSLiteralType(node) { + this.print(node.literal, node); +} + +export function TSExpressionWithTypeArguments(node) { + this.print(node.expression, node); + this.print(node.typeParameters, node); +} + +export function TSInterfaceDeclaration(node) { + const { declare, id, typeParameters, extends: extendz, body } = node; + if (declare) { + this.word("declare"); + this.space(); + } + this.word("interface"); + this.space(); + this.print(id, node); + this.print(typeParameters, node); + if (extendz) { + this.space(); + this.word("extends"); + this.space(); + this.printList(extendz, node); + } + this.space(); + this.print(body, node); +} + +export function TSInterfaceBody(node) { + this.tsPrintTypeLiteralOrInterfaceBody(node.body, node); +} + +export function TSTypeAliasDeclaration(node) { + const { declare, id, typeParameters, typeAnnotation } = node; + if (declare) { + this.word("declare"); + this.space(); + } + this.word("type"); + this.space(); + this.print(id, node); + this.print(typeParameters, node); + this.space(); + this.token("="); + this.space(); + this.print(typeAnnotation, node); + this.token(";"); +} + +export function TSAsExpression(node) { + const { expression, typeAnnotation } = node; + this.print(expression, node); + this.space(); + this.word("as"); + this.space(); + this.print(typeAnnotation, node); +} + +export function TSTypeAssertion(node) { + const { typeAnnotation, expression } = node; + this.token("<"); + this.print(typeAnnotation, node); + this.token(">"); + this.space(); + this.print(expression, node); +} + +export function TSEnumDeclaration(node) { + const { declare, const: isConst, id, members } = node; + if (declare) { + this.word("declare"); + this.space(); + } + if (isConst) { + this.word("const"); + this.space(); + } + this.word("enum"); + this.space(); + this.print(id, node); + this.space(); + this.tsPrintBraced(members, node); +} + +export function TSEnumMember(node) { + const { id, initializer } = node; + this.print(id, node); + if (initializer) { + this.space(); + this.token("="); + this.space(); + this.print(initializer, node); + } + this.token(","); +} + +export function TSModuleDeclaration(node) { + const { declare, id } = node; + + if (declare) { + this.word("declare"); + this.space(); + } + + if (!node.global) { + this.word(id.type === "Identifier" ? "namespace" : "module"); + this.space(); + } + this.print(id, node); + + if (!node.body) { + this.token(";"); + return; + } + + let body = node.body; + while (body.type === "TSModuleDeclaration") { + this.token("."); + this.print(body.id, body); + body = body.body; + } + + this.space(); + this.print(body, node); +} + +export function TSModuleBlock(node) { + this.tsPrintBraced(node.body, node); +} + +export function TSImportEqualsDeclaration(node) { + const { isExport, id, moduleReference } = node; + if (isExport) { + this.word("export"); + this.space(); + } + this.word("import"); + this.space(); + this.print(id, node); + this.space(); + this.token("="); + this.space(); + this.print(moduleReference, node); + this.token(";"); +} + +export function TSExternalModuleReference(node) { + this.token("require("); + this.print(node.expression, node); + this.token(")"); +} + +export function TSNonNullExpression(node) { + this.print(node.expression, node); + this.token("!"); +} + +export function TSExportAssignment(node) { + this.word("export"); + this.space(); + this.token("="); + this.space(); + this.print(node.expression, node); + this.token(";"); +} + +export function TSNamespaceExportDeclaration(node) { + this.word("export"); + this.space(); + this.word("as"); + this.space(); + this.word("namespace"); + this.space(); + this.print(node.id, node); +} + +export function tsPrintSignatureDeclarationBase(node) { + const { typeParameters, parameters } = node; + this.print(typeParameters, node); + this.token("("); + this._parameters(parameters, node); + this.token(")"); + this.print(node.typeAnnotation, node); +} diff --git a/packages/babel-generator/src/node/parentheses.js b/packages/babel-generator/src/node/parentheses.js index 2f4326ec5e..b160225288 100644 --- a/packages/babel-generator/src/node/parentheses.js +++ b/packages/babel-generator/src/node/parentheses.js @@ -93,6 +93,14 @@ export function Binary(node: Object, parent: Object): boolean { return false; } +export function TSAsExpression() { + return true; +} + +export function TSTypeAssertion() { + return true; +} + export function BinaryExpression(node: Object, parent: Object): boolean { // let i = (1 in []); // for ((1 in []);;); @@ -173,7 +181,9 @@ export function ConditionalExpression(node: Object, parent: Object): boolean { t.isBinary(parent) || t.isConditionalExpression(parent, { test: node }) || t.isAwaitExpression(parent) || - t.isTaggedTemplateExpression(parent) + t.isTaggedTemplateExpression(parent) || + t.isTSTypeAssertion(parent) || + t.isTSAsExpression(parent) ) { return true; } diff --git a/packages/babel-generator/test/fixtures/typescript/arrow-function-annotated/actual.js b/packages/babel-generator/test/fixtures/typescript/arrow-function-annotated/actual.js new file mode 100644 index 0000000000..ae22bd8d69 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/arrow-function-annotated/actual.js @@ -0,0 +1 @@ +(x: number): number => x; diff --git a/packages/babel-generator/test/fixtures/typescript/arrow-function-annotated/expected.js b/packages/babel-generator/test/fixtures/typescript/arrow-function-annotated/expected.js new file mode 100644 index 0000000000..a8ff7aff42 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/arrow-function-annotated/expected.js @@ -0,0 +1 @@ +(x: number): number => x; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/arrow-function-async-generic-false-positive/actual.js b/packages/babel-generator/test/fixtures/typescript/arrow-function-async-generic-false-positive/actual.js new file mode 100644 index 0000000000..29986ed4d0 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/arrow-function-async-generic-false-positive/actual.js @@ -0,0 +1,2 @@ +async < 1; +async() == 0; diff --git a/packages/babel-generator/test/fixtures/typescript/arrow-function-async-generic-false-positive/expected.js b/packages/babel-generator/test/fixtures/typescript/arrow-function-async-generic-false-positive/expected.js new file mode 100644 index 0000000000..0db38b97d1 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/arrow-function-async-generic-false-positive/expected.js @@ -0,0 +1,2 @@ +async < 1; +async() == 0; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/arrow-function-async-generic/actual.js b/packages/babel-generator/test/fixtures/typescript/arrow-function-async-generic/actual.js new file mode 100644 index 0000000000..6295801168 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/arrow-function-async-generic/actual.js @@ -0,0 +1 @@ +async (a: T): T => a; diff --git a/packages/babel-generator/test/fixtures/typescript/arrow-function-async-generic/expected.js b/packages/babel-generator/test/fixtures/typescript/arrow-function-async-generic/expected.js new file mode 100644 index 0000000000..c2b1123797 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/arrow-function-async-generic/expected.js @@ -0,0 +1 @@ +async (a: T): T => a; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/arrow-function-async/actual.js b/packages/babel-generator/test/fixtures/typescript/arrow-function-async/actual.js new file mode 100644 index 0000000000..5f4fa39a1c --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/arrow-function-async/actual.js @@ -0,0 +1 @@ +async (x?: number): any => x; diff --git a/packages/babel-generator/test/fixtures/typescript/arrow-function-async/expected.js b/packages/babel-generator/test/fixtures/typescript/arrow-function-async/expected.js new file mode 100644 index 0000000000..a355ef8edb --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/arrow-function-async/expected.js @@ -0,0 +1 @@ +async (x?: number): any => x; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/arrow-function-default-parameter-values/actual.js b/packages/babel-generator/test/fixtures/typescript/arrow-function-default-parameter-values/actual.js new file mode 100644 index 0000000000..99e3245659 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/arrow-function-default-parameter-values/actual.js @@ -0,0 +1 @@ +(x: number = 0) => 0; diff --git a/packages/babel-generator/test/fixtures/typescript/arrow-function-default-parameter-values/expected.js b/packages/babel-generator/test/fixtures/typescript/arrow-function-default-parameter-values/expected.js new file mode 100644 index 0000000000..140144d66a --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/arrow-function-default-parameter-values/expected.js @@ -0,0 +1 @@ +(x: number = 0) => 0; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/arrow-function-destructuring/actual.js b/packages/babel-generator/test/fixtures/typescript/arrow-function-destructuring/actual.js new file mode 100644 index 0000000000..4bb8dcbff4 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/arrow-function-destructuring/actual.js @@ -0,0 +1 @@ +({ a = 0 }) => 0; diff --git a/packages/babel-generator/test/fixtures/typescript/arrow-function-destructuring/expected.js b/packages/babel-generator/test/fixtures/typescript/arrow-function-destructuring/expected.js new file mode 100644 index 0000000000..c007a6326e --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/arrow-function-destructuring/expected.js @@ -0,0 +1,3 @@ +({ + a = 0 +}) => 0; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/arrow-function-generic-tsx/actual.js b/packages/babel-generator/test/fixtures/typescript/arrow-function-generic-tsx/actual.js new file mode 100644 index 0000000000..b9eea2b05a --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/arrow-function-generic-tsx/actual.js @@ -0,0 +1,2 @@ +// Same as `generic`. Verify that JSX doesn't change things. +(a: T): T => a; diff --git a/packages/babel-generator/test/fixtures/typescript/arrow-function-generic-tsx/expected.js b/packages/babel-generator/test/fixtures/typescript/arrow-function-generic-tsx/expected.js new file mode 100644 index 0000000000..fc243c0e52 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/arrow-function-generic-tsx/expected.js @@ -0,0 +1,2 @@ +// Same as `generic`. Verify that JSX doesn't change things. +(a: T): T => a; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/arrow-function-generic-tsx/options.json b/packages/babel-generator/test/fixtures/typescript/arrow-function-generic-tsx/options.json new file mode 100644 index 0000000000..6e5bbd52f8 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/arrow-function-generic-tsx/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["jsx", "typescript"] +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/arrow-function-generic/actual.js b/packages/babel-generator/test/fixtures/typescript/arrow-function-generic/actual.js new file mode 100644 index 0000000000..110f583654 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/arrow-function-generic/actual.js @@ -0,0 +1 @@ +(a: T): T => a; diff --git a/packages/babel-generator/test/fixtures/typescript/arrow-function-generic/expected.js b/packages/babel-generator/test/fixtures/typescript/arrow-function-generic/expected.js new file mode 100644 index 0000000000..965d8d668f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/arrow-function-generic/expected.js @@ -0,0 +1 @@ +(a: T): T => a; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/arrow-function-optional-parameter/actual.js b/packages/babel-generator/test/fixtures/typescript/arrow-function-optional-parameter/actual.js new file mode 100644 index 0000000000..4b8fea779c --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/arrow-function-optional-parameter/actual.js @@ -0,0 +1 @@ +(x?: number): any => x; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/arrow-function-optional-parameter/expected.js b/packages/babel-generator/test/fixtures/typescript/arrow-function-optional-parameter/expected.js new file mode 100644 index 0000000000..4b8fea779c --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/arrow-function-optional-parameter/expected.js @@ -0,0 +1 @@ +(x?: number): any => x; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/arrow-function-predicate-types/actual.js b/packages/babel-generator/test/fixtures/typescript/arrow-function-predicate-types/actual.js new file mode 100644 index 0000000000..5c26fdbc26 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/arrow-function-predicate-types/actual.js @@ -0,0 +1 @@ +(x: any): x is string => true; diff --git a/packages/babel-generator/test/fixtures/typescript/arrow-function-predicate-types/expected.js b/packages/babel-generator/test/fixtures/typescript/arrow-function-predicate-types/expected.js new file mode 100644 index 0000000000..75b1bd40fb --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/arrow-function-predicate-types/expected.js @@ -0,0 +1 @@ +(x: any): x is string => true; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/cast-as/actual.js b/packages/babel-generator/test/fixtures/typescript/cast-as/actual.js new file mode 100644 index 0000000000..4ecdb2197e --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/cast-as/actual.js @@ -0,0 +1,4 @@ +x as T; +x < y as boolean; // (x < y) as boolean; +x === 1 as number; // x === (1 as number); +x as any as T; diff --git a/packages/babel-generator/test/fixtures/typescript/cast-as/expected.js b/packages/babel-generator/test/fixtures/typescript/cast-as/expected.js new file mode 100644 index 0000000000..36d7101a30 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/cast-as/expected.js @@ -0,0 +1,6 @@ +(x as T); +(x < y as boolean); // (x < y) as boolean; + +x === (1 as number); // x === (1 as number); + +((x as any) as T); \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/cast-false-positive/actual.js b/packages/babel-generator/test/fixtures/typescript/cast-false-positive/actual.js new file mode 100644 index 0000000000..51f9677f39 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/cast-false-positive/actual.js @@ -0,0 +1 @@ +f(x < 0, /a/); diff --git a/packages/babel-generator/test/fixtures/typescript/cast-false-positive/expected.js b/packages/babel-generator/test/fixtures/typescript/cast-false-positive/expected.js new file mode 100644 index 0000000000..3d7b364bad --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/cast-false-positive/expected.js @@ -0,0 +1 @@ +f(x < 0, /a/); \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/cast-need-parentheses/actual.js b/packages/babel-generator/test/fixtures/typescript/cast-need-parentheses/actual.js new file mode 100644 index 0000000000..4c924ac9b0 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/cast-need-parentheses/actual.js @@ -0,0 +1,3 @@ +( x).y; +(x as T).y; +x!.y; diff --git a/packages/babel-generator/test/fixtures/typescript/cast-need-parentheses/expected.js b/packages/babel-generator/test/fixtures/typescript/cast-need-parentheses/expected.js new file mode 100644 index 0000000000..ec263a68cd --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/cast-need-parentheses/expected.js @@ -0,0 +1,3 @@ +( x).y; +(x as T).y; +x!.y; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/cast-null-assertion-then-property-access/actual.js b/packages/babel-generator/test/fixtures/typescript/cast-null-assertion-then-property-access/actual.js new file mode 100644 index 0000000000..b89be6ad16 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/cast-null-assertion-then-property-access/actual.js @@ -0,0 +1 @@ +x!.y; diff --git a/packages/babel-generator/test/fixtures/typescript/cast-null-assertion-then-property-access/expected.js b/packages/babel-generator/test/fixtures/typescript/cast-null-assertion-then-property-access/expected.js new file mode 100644 index 0000000000..bab3e51787 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/cast-null-assertion-then-property-access/expected.js @@ -0,0 +1 @@ +x!.y; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/cast-null-assertion/actual.js b/packages/babel-generator/test/fixtures/typescript/cast-null-assertion/actual.js new file mode 100644 index 0000000000..703cb104ad --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/cast-null-assertion/actual.js @@ -0,0 +1 @@ +x!; diff --git a/packages/babel-generator/test/fixtures/typescript/cast-null-assertion/expected.js b/packages/babel-generator/test/fixtures/typescript/cast-null-assertion/expected.js new file mode 100644 index 0000000000..c8568566b5 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/cast-null-assertion/expected.js @@ -0,0 +1 @@ +x!; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/cast-type-assertion-after-operator/actual.js b/packages/babel-generator/test/fixtures/typescript/cast-type-assertion-after-operator/actual.js new file mode 100644 index 0000000000..7286cf709b --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/cast-type-assertion-after-operator/actual.js @@ -0,0 +1 @@ +1 + 1; diff --git a/packages/babel-generator/test/fixtures/typescript/cast-type-assertion-after-operator/expected.js b/packages/babel-generator/test/fixtures/typescript/cast-type-assertion-after-operator/expected.js new file mode 100644 index 0000000000..4123915736 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/cast-type-assertion-after-operator/expected.js @@ -0,0 +1 @@ +1 + ( 1); \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/cast-type-assertion-before-operator/actual.js b/packages/babel-generator/test/fixtures/typescript/cast-type-assertion-before-operator/actual.js new file mode 100644 index 0000000000..03f7f08051 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/cast-type-assertion-before-operator/actual.js @@ -0,0 +1 @@ + 1 + 1; diff --git a/packages/babel-generator/test/fixtures/typescript/cast-type-assertion-before-operator/expected.js b/packages/babel-generator/test/fixtures/typescript/cast-type-assertion-before-operator/expected.js new file mode 100644 index 0000000000..d3c9794e9d --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/cast-type-assertion-before-operator/expected.js @@ -0,0 +1 @@ +( 1) + 1; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/cast-type-assertion/actual.js b/packages/babel-generator/test/fixtures/typescript/cast-type-assertion/actual.js new file mode 100644 index 0000000000..742b94ba61 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/cast-type-assertion/actual.js @@ -0,0 +1 @@ + 1; diff --git a/packages/babel-generator/test/fixtures/typescript/cast-type-assertion/expected.js b/packages/babel-generator/test/fixtures/typescript/cast-type-assertion/expected.js new file mode 100644 index 0000000000..6f44eaac30 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/cast-type-assertion/expected.js @@ -0,0 +1 @@ +( 1); \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-abstract/actual.js b/packages/babel-generator/test/fixtures/typescript/class-abstract/actual.js new file mode 100644 index 0000000000..97bbd960bc --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-abstract/actual.js @@ -0,0 +1,6 @@ +abstract class C {} +declare abstract class C {} +export abstract class C {} +// `export abstract class { }` is not valid. +// `export default abstract class C { }` is not valid. +// `abstract class` is not valid as an expression. diff --git a/packages/babel-generator/test/fixtures/typescript/class-abstract/expected.js b/packages/babel-generator/test/fixtures/typescript/class-abstract/expected.js new file mode 100644 index 0000000000..63db4cfa6c --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-abstract/expected.js @@ -0,0 +1,7 @@ +abstract class C {} + +declare abstract class C {} + +export abstract class C {} // `export abstract class { }` is not valid. +// `export default abstract class C { }` is not valid. +// `abstract class` is not valid as an expression. \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-constructor/actual.js b/packages/babel-generator/test/fixtures/typescript/class-constructor/actual.js new file mode 100644 index 0000000000..e1621c489f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-constructor/actual.js @@ -0,0 +1,5 @@ +class C { + constructor(x: number, y: number); + constructor(x: string, y: string); + constructor(x: any, y: any) {} +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-constructor/expected.js b/packages/babel-generator/test/fixtures/typescript/class-constructor/expected.js new file mode 100644 index 0000000000..f662da0c25 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-constructor/expected.js @@ -0,0 +1,7 @@ +class C { + constructor(x: number, y: number); + constructor(x: string, y: string); + + constructor(x: any, y: any) {} + +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-declare/actual.js b/packages/babel-generator/test/fixtures/typescript/class-declare/actual.js new file mode 100644 index 0000000000..4fe9d2b0cb --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-declare/actual.js @@ -0,0 +1,7 @@ +declare class C { + [x: string]: any; + x; + x: number; + f(); + f(): void; +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-declare/expected.js b/packages/babel-generator/test/fixtures/typescript/class-declare/expected.js new file mode 100644 index 0000000000..96b77a32eb --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-declare/expected.js @@ -0,0 +1,7 @@ +declare class C { + [x: string]: any; + x; + x: number; + f(); + f(): void; +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-expression-extends-implements/actual.js b/packages/babel-generator/test/fixtures/typescript/class-expression-extends-implements/actual.js new file mode 100644 index 0000000000..77b5d3bb18 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-expression-extends-implements/actual.js @@ -0,0 +1,2 @@ +(class extends f() implements X.Y {}); +(class C extends f() implements X.Y {}); diff --git a/packages/babel-generator/test/fixtures/typescript/class-expression-extends-implements/expected.js b/packages/babel-generator/test/fixtures/typescript/class-expression-extends-implements/expected.js new file mode 100644 index 0000000000..02df436235 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-expression-extends-implements/expected.js @@ -0,0 +1,3 @@ +(class extends f() implements X.Y {}); + +(class C extends f() implements X.Y {}); \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-expression-extends/actual.js b/packages/babel-generator/test/fixtures/typescript/class-expression-extends/actual.js new file mode 100644 index 0000000000..b5054b0c75 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-expression-extends/actual.js @@ -0,0 +1,2 @@ +(class extends f() {}); +(class C extends f() {}); diff --git a/packages/babel-generator/test/fixtures/typescript/class-expression-extends/expected.js b/packages/babel-generator/test/fixtures/typescript/class-expression-extends/expected.js new file mode 100644 index 0000000000..e2273b14e0 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-expression-extends/expected.js @@ -0,0 +1,3 @@ +(class extends f() {}); + +(class C extends f() {}); \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-expression-generic/actual.js b/packages/babel-generator/test/fixtures/typescript/class-expression-generic/actual.js new file mode 100644 index 0000000000..94973f7a29 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-expression-generic/actual.js @@ -0,0 +1,2 @@ +(class {}); +(class C {}); diff --git a/packages/babel-generator/test/fixtures/typescript/class-expression-generic/expected.js b/packages/babel-generator/test/fixtures/typescript/class-expression-generic/expected.js new file mode 100644 index 0000000000..d63a9b6bfa --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-expression-generic/expected.js @@ -0,0 +1,3 @@ +(class {}); + +(class C {}); \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-expression-implements/actual.js b/packages/babel-generator/test/fixtures/typescript/class-expression-implements/actual.js new file mode 100644 index 0000000000..7b5e192fdf --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-expression-implements/actual.js @@ -0,0 +1,2 @@ +(class implements X.Y {}); +(class C implements X.Y {}); diff --git a/packages/babel-generator/test/fixtures/typescript/class-expression-implements/expected.js b/packages/babel-generator/test/fixtures/typescript/class-expression-implements/expected.js new file mode 100644 index 0000000000..cf765e8018 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-expression-implements/expected.js @@ -0,0 +1,3 @@ +(class implements X.Y {}); + +(class C implements X.Y {}); \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-extends-implements/actual.js b/packages/babel-generator/test/fixtures/typescript/class-extends-implements/actual.js new file mode 100644 index 0000000000..960c58c5e6 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-extends-implements/actual.js @@ -0,0 +1 @@ +class C extends f() implements X.Y {} diff --git a/packages/babel-generator/test/fixtures/typescript/class-extends-implements/expected.js b/packages/babel-generator/test/fixtures/typescript/class-extends-implements/expected.js new file mode 100644 index 0000000000..167cbb725e --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-extends-implements/expected.js @@ -0,0 +1 @@ +class C extends f() implements X.Y {} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-extends/actual.js b/packages/babel-generator/test/fixtures/typescript/class-extends/actual.js new file mode 100644 index 0000000000..c527424e5c --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-extends/actual.js @@ -0,0 +1 @@ +class C extends f() {} diff --git a/packages/babel-generator/test/fixtures/typescript/class-extends/expected.js b/packages/babel-generator/test/fixtures/typescript/class-extends/expected.js new file mode 100644 index 0000000000..0fdc9d06c1 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-extends/expected.js @@ -0,0 +1 @@ +class C extends f() {} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-generic/actual.js b/packages/babel-generator/test/fixtures/typescript/class-generic/actual.js new file mode 100644 index 0000000000..dbaeabda8c --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-generic/actual.js @@ -0,0 +1 @@ +class C {} diff --git a/packages/babel-generator/test/fixtures/typescript/class-generic/expected.js b/packages/babel-generator/test/fixtures/typescript/class-generic/expected.js new file mode 100644 index 0000000000..07623a8081 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-generic/expected.js @@ -0,0 +1,3 @@ +class C {} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-get-generic/actual.js b/packages/babel-generator/test/fixtures/typescript/class-get-generic/actual.js new file mode 100644 index 0000000000..85739b3c2f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-get-generic/actual.js @@ -0,0 +1,3 @@ +declare class C { + get(): void; +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-get-generic/expected.js b/packages/babel-generator/test/fixtures/typescript/class-get-generic/expected.js new file mode 100644 index 0000000000..dc2798f2fd --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-get-generic/expected.js @@ -0,0 +1,3 @@ +declare class C { + get(): void; +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-implements/actual.js b/packages/babel-generator/test/fixtures/typescript/class-implements/actual.js new file mode 100644 index 0000000000..725bd441be --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-implements/actual.js @@ -0,0 +1 @@ +class C implements X.Y {} diff --git a/packages/babel-generator/test/fixtures/typescript/class-implements/expected.js b/packages/babel-generator/test/fixtures/typescript/class-implements/expected.js new file mode 100644 index 0000000000..44c5680a69 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-implements/expected.js @@ -0,0 +1 @@ +class C implements X.Y {} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-index-signature/actual.js b/packages/babel-generator/test/fixtures/typescript/class-index-signature/actual.js new file mode 100644 index 0000000000..a05c783338 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-index-signature/actual.js @@ -0,0 +1,4 @@ +class C { + [x: string]: any; + readonly [x: string]: any; +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-index-signature/expected.js b/packages/babel-generator/test/fixtures/typescript/class-index-signature/expected.js new file mode 100644 index 0000000000..d55ebdbb81 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-index-signature/expected.js @@ -0,0 +1,4 @@ +class C { + [x: string]: any; + readonly [x: string]: any; +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-members-with-modifier-names/actual.js b/packages/babel-generator/test/fixtures/typescript/class-members-with-modifier-names/actual.js new file mode 100644 index 0000000000..cbf422a383 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-members-with-modifier-names/actual.js @@ -0,0 +1,6 @@ +class C { + public(): void; + public static(): void; + readonly = 0; + async(): void; +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-members-with-modifier-names/expected.js b/packages/babel-generator/test/fixtures/typescript/class-members-with-modifier-names/expected.js new file mode 100644 index 0000000000..2b2cbb10c3 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-members-with-modifier-names/expected.js @@ -0,0 +1,6 @@ +class C { + public(): void; + public static(): void; + readonly = 0; + async(): void; +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-members-with-reserved-names/actual.js b/packages/babel-generator/test/fixtures/typescript/class-members-with-reserved-names/actual.js new file mode 100644 index 0000000000..579d8c8998 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-members-with-reserved-names/actual.js @@ -0,0 +1,3 @@ +class C { + public delete(): void; +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-members-with-reserved-names/expected.js b/packages/babel-generator/test/fixtures/typescript/class-members-with-reserved-names/expected.js new file mode 100644 index 0000000000..3ec18ce5bd --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-members-with-reserved-names/expected.js @@ -0,0 +1,3 @@ +class C { + public delete(): void; +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-method-computed/actual.js b/packages/babel-generator/test/fixtures/typescript/class-method-computed/actual.js new file mode 100644 index 0000000000..ce02ff3566 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-method-computed/actual.js @@ -0,0 +1,4 @@ +class C { + [Symbol.iterator](): void; + [Symbol.iterator]?(): void; +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-method-computed/expected.js b/packages/babel-generator/test/fixtures/typescript/class-method-computed/expected.js new file mode 100644 index 0000000000..6deae723e2 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-method-computed/expected.js @@ -0,0 +1,4 @@ +class C { + [Symbol.iterator](): void; + [Symbol.iterator]?(): void; +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-method-generic/actual.js b/packages/babel-generator/test/fixtures/typescript/class-method-generic/actual.js new file mode 100644 index 0000000000..ceefb4d0ce --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-method-generic/actual.js @@ -0,0 +1,4 @@ +class C { + f(a: T, b?: T, ...c: T[]): T {} + [Symbol.iterator](): T {} +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-method-generic/expected.js b/packages/babel-generator/test/fixtures/typescript/class-method-generic/expected.js new file mode 100644 index 0000000000..d85f1ac31a --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-method-generic/expected.js @@ -0,0 +1,6 @@ +class C { + f(a: T, b?: T, ...c: T[]): T {} + + [Symbol.iterator](): T {} + +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-method-no-body/actual.js b/packages/babel-generator/test/fixtures/typescript/class-method-no-body/actual.js new file mode 100644 index 0000000000..8641a976d7 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-method-no-body/actual.js @@ -0,0 +1,4 @@ +class C { + f(); + f(): void; +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-method-no-body/expected.js b/packages/babel-generator/test/fixtures/typescript/class-method-no-body/expected.js new file mode 100644 index 0000000000..5d29b00b2b --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-method-no-body/expected.js @@ -0,0 +1,4 @@ +class C { + f(); + f(): void; +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-method-optional/actual.js b/packages/babel-generator/test/fixtures/typescript/class-method-optional/actual.js new file mode 100644 index 0000000000..6c8694960d --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-method-optional/actual.js @@ -0,0 +1,3 @@ +class C { + m?(): void {} +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-method-optional/expected.js b/packages/babel-generator/test/fixtures/typescript/class-method-optional/expected.js new file mode 100644 index 0000000000..446f672969 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-method-optional/expected.js @@ -0,0 +1,4 @@ +class C { + m?(): void {} + +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-method-return-type/actual.js b/packages/babel-generator/test/fixtures/typescript/class-method-return-type/actual.js new file mode 100644 index 0000000000..6c537e03f6 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-method-return-type/actual.js @@ -0,0 +1,3 @@ +class C { + f(): void {} +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-method-return-type/expected.js b/packages/babel-generator/test/fixtures/typescript/class-method-return-type/expected.js new file mode 100644 index 0000000000..c671f33ac7 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-method-return-type/expected.js @@ -0,0 +1,4 @@ +class C { + f(): void {} + +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-method-with-newline-with-body/actual.js b/packages/babel-generator/test/fixtures/typescript/class-method-with-newline-with-body/actual.js new file mode 100644 index 0000000000..65bd228eed --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-method-with-newline-with-body/actual.js @@ -0,0 +1,6 @@ +class C +{ + m() + { + } +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-method-with-newline-with-body/expected.js b/packages/babel-generator/test/fixtures/typescript/class-method-with-newline-with-body/expected.js new file mode 100644 index 0000000000..dbdc2d61c8 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-method-with-newline-with-body/expected.js @@ -0,0 +1,4 @@ +class C { + m() {} + +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-method-with-newline-without-body/actual.js b/packages/babel-generator/test/fixtures/typescript/class-method-with-newline-without-body/actual.js new file mode 100644 index 0000000000..0a2f3719eb --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-method-with-newline-without-body/actual.js @@ -0,0 +1,5 @@ +class C +{ + m() + n() +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-method-with-newline-without-body/expected.js b/packages/babel-generator/test/fixtures/typescript/class-method-with-newline-without-body/expected.js new file mode 100644 index 0000000000..087b9682f4 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-method-with-newline-without-body/expected.js @@ -0,0 +1,4 @@ +class C { + m(); + n(); +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-modifiers-accessors/actual.js b/packages/babel-generator/test/fixtures/typescript/class-modifiers-accessors/actual.js new file mode 100644 index 0000000000..07b7d79c0c --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-modifiers-accessors/actual.js @@ -0,0 +1,11 @@ +// Copy of modifiers-methods with 'get' +abstract class C { + abstract get a(); + static get s() { return 0; } + public abstract get pua(); + public static get pus() { return 0; } + + public get pu() { return 0; } + protected get po() { return 0; } + private get pi() { return 0; } +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-modifiers-accessors/expected.js b/packages/babel-generator/test/fixtures/typescript/class-modifiers-accessors/expected.js new file mode 100644 index 0000000000..738e25755c --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-modifiers-accessors/expected.js @@ -0,0 +1,27 @@ +// Copy of modifiers-methods with 'get' +abstract class C { + abstract get a(); + + static get s() { + return 0; + } + + public abstract get pua(); + + public static get pus() { + return 0; + } + + public get pu() { + return 0; + } + + protected get po() { + return 0; + } + + private get pi() { + return 0; + } + +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-modifiers-methods-async/actual.js b/packages/babel-generator/test/fixtures/typescript/class-modifiers-methods-async/actual.js new file mode 100644 index 0000000000..9632a64212 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-modifiers-methods-async/actual.js @@ -0,0 +1,11 @@ +// Copy of modifiers-methods with 'async' +abstract class C { + abstract async a(); + static async s() {} + public abstract async pua(); + public static async pus() {} + + public async pu() {} + protected async po() {} + private async pi() {} +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-modifiers-methods-async/expected.js b/packages/babel-generator/test/fixtures/typescript/class-modifiers-methods-async/expected.js new file mode 100644 index 0000000000..9c3b2b73e4 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-modifiers-methods-async/expected.js @@ -0,0 +1,17 @@ +// Copy of modifiers-methods with 'async' +abstract class C { + abstract async a(); + + static async s() {} + + public abstract async pua(); + + public static async pus() {} + + public async pu() {} + + protected async po() {} + + private async pi() {} + +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-modifiers-properties/actual.js b/packages/babel-generator/test/fixtures/typescript/class-modifiers-properties/actual.js new file mode 100644 index 0000000000..ab1a705653 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-modifiers-properties/actual.js @@ -0,0 +1,21 @@ +abstract class C { + readonly r; + readonly r2?: number; + abstract a; + static s; + + public pu; + protected po; + private pi; + + readonly abstract ra; + abstract readonly ar; + static readonly sr; + + public readonly pur; + public abstract pua; + public static pus; + public readonly abstract pura; + public abstract readonly puar; + public static readonly pusr; +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-modifiers-properties/expected.js b/packages/babel-generator/test/fixtures/typescript/class-modifiers-properties/expected.js new file mode 100644 index 0000000000..500fa4bfc7 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-modifiers-properties/expected.js @@ -0,0 +1,18 @@ +abstract class C { + readonly r; + readonly r2?: number; + abstract a; + static s; + public pu; + protected po; + private pi; + abstract readonly ra; + abstract readonly ar; + static readonly sr; + public readonly pur; + public abstract pua; + public static pus; + public abstract readonly pura; + public abstract readonly puar; + public static readonly pusr; +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-parameter-properties-with-decorators/actual.js b/packages/babel-generator/test/fixtures/typescript/class-parameter-properties-with-decorators/actual.js new file mode 100644 index 0000000000..c5e8d315db --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-parameter-properties-with-decorators/actual.js @@ -0,0 +1,3 @@ +class C { + constructor(@foo readonly x: number) {} +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-parameter-properties-with-decorators/expected.js b/packages/babel-generator/test/fixtures/typescript/class-parameter-properties-with-decorators/expected.js new file mode 100644 index 0000000000..0793b51630 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-parameter-properties-with-decorators/expected.js @@ -0,0 +1,5 @@ +class C { + constructor(@foo + readonly x: number) {} + +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-parameter-properties-with-decorators/options.json b/packages/babel-generator/test/fixtures/typescript/class-parameter-properties-with-decorators/options.json new file mode 100644 index 0000000000..bb696a1918 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-parameter-properties-with-decorators/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["typescript", "decorators"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-parameter-properties/actual.js b/packages/babel-generator/test/fixtures/typescript/class-parameter-properties/actual.js new file mode 100644 index 0000000000..c9d6ec5927 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-parameter-properties/actual.js @@ -0,0 +1,11 @@ +class C { + constructor( + readonly r, + public pu: number, + protected po?, + private pi?: number, + public readonly pur, + // Also works on AssignmentPattern + readonly x = 0, + public y?: number = 0) {} +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-parameter-properties/expected.js b/packages/babel-generator/test/fixtures/typescript/class-parameter-properties/expected.js new file mode 100644 index 0000000000..ba4b16ee95 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-parameter-properties/expected.js @@ -0,0 +1,5 @@ +class C { + constructor(readonly r, public pu: number, protected po?, private pi?: number, public readonly pur, // Also works on AssignmentPattern + readonly x = 0, public y?: number = 0) {} + +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-properties/actual.js b/packages/babel-generator/test/fixtures/typescript/class-properties/actual.js new file mode 100644 index 0000000000..8c0ad68965 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-properties/actual.js @@ -0,0 +1,6 @@ +class C { + x; + x?; + x: number; + x: number = 1; +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-properties/expected.js b/packages/babel-generator/test/fixtures/typescript/class-properties/expected.js new file mode 100644 index 0000000000..6ae9081d49 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-properties/expected.js @@ -0,0 +1,6 @@ +class C { + x; + x?; + x: number; + x: number = 1; +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-property-computed/actual.js b/packages/babel-generator/test/fixtures/typescript/class-property-computed/actual.js new file mode 100644 index 0000000000..10ee099fa9 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-property-computed/actual.js @@ -0,0 +1,4 @@ +class C { + [Symbol.iterator]: number; + [Symbol.iterator]?: number; +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-property-computed/expected.js b/packages/babel-generator/test/fixtures/typescript/class-property-computed/expected.js new file mode 100644 index 0000000000..883cb30929 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-property-computed/expected.js @@ -0,0 +1,4 @@ +class C { + [Symbol.iterator]: number; + [Symbol.iterator]?: number; +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/class-static/actual.js b/packages/babel-generator/test/fixtures/typescript/class-static/actual.js new file mode 100644 index 0000000000..aca8d85ba7 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-static/actual.js @@ -0,0 +1,6 @@ +class C { + static f(); + public static f(); + protected static f(); + private static f(); +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-static/expected.js b/packages/babel-generator/test/fixtures/typescript/class-static/expected.js new file mode 100644 index 0000000000..9e965e3a55 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-static/expected.js @@ -0,0 +1,6 @@ +class C { + static f(); + public static f(); + protected static f(); + private static f(); +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/const-no-initializer/actual.js b/packages/babel-generator/test/fixtures/typescript/const-no-initializer/actual.js new file mode 100644 index 0000000000..8caae258b9 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/const-no-initializer/actual.js @@ -0,0 +1 @@ +const x: number; diff --git a/packages/babel-generator/test/fixtures/typescript/const-no-initializer/expected.js b/packages/babel-generator/test/fixtures/typescript/const-no-initializer/expected.js new file mode 100644 index 0000000000..bee7698244 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/const-no-initializer/expected.js @@ -0,0 +1 @@ +const x: number; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/declare-const/actual.js b/packages/babel-generator/test/fixtures/typescript/declare-const/actual.js new file mode 100644 index 0000000000..f394dbd226 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/declare-const/actual.js @@ -0,0 +1 @@ +declare const x: number, y: string; diff --git a/packages/babel-generator/test/fixtures/typescript/declare-const/expected.js b/packages/babel-generator/test/fixtures/typescript/declare-const/expected.js new file mode 100644 index 0000000000..9b45df25d1 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/declare-const/expected.js @@ -0,0 +1 @@ +declare const x: number, y: string; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/declare-destructure/actual.js b/packages/babel-generator/test/fixtures/typescript/declare-destructure/actual.js new file mode 100644 index 0000000000..7f46b962e9 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/declare-destructure/actual.js @@ -0,0 +1 @@ +declare const { x, y }: { x: number, y: number }; diff --git a/packages/babel-generator/test/fixtures/typescript/declare-destructure/expected.js b/packages/babel-generator/test/fixtures/typescript/declare-destructure/expected.js new file mode 100644 index 0000000000..29715fcf34 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/declare-destructure/expected.js @@ -0,0 +1,7 @@ +declare const { + x, + y +}: { + x: number; + y: number; +}; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/declare-interface/actual.js b/packages/babel-generator/test/fixtures/typescript/declare-interface/actual.js new file mode 100644 index 0000000000..85d7623f14 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/declare-interface/actual.js @@ -0,0 +1 @@ +declare interface I {} diff --git a/packages/babel-generator/test/fixtures/typescript/declare-interface/expected.js b/packages/babel-generator/test/fixtures/typescript/declare-interface/expected.js new file mode 100644 index 0000000000..60c7e2452d --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/declare-interface/expected.js @@ -0,0 +1 @@ +declare interface I {} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/declare-let/actual.js b/packages/babel-generator/test/fixtures/typescript/declare-let/actual.js new file mode 100644 index 0000000000..3dc63502e9 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/declare-let/actual.js @@ -0,0 +1 @@ +declare let x; diff --git a/packages/babel-generator/test/fixtures/typescript/declare-let/expected.js b/packages/babel-generator/test/fixtures/typescript/declare-let/expected.js new file mode 100644 index 0000000000..829896caf3 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/declare-let/expected.js @@ -0,0 +1 @@ +declare let x; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/declare-var/actual.js b/packages/babel-generator/test/fixtures/typescript/declare-var/actual.js new file mode 100644 index 0000000000..c1a3d52a76 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/declare-var/actual.js @@ -0,0 +1,2 @@ +declare var x; +declare var x: any; diff --git a/packages/babel-generator/test/fixtures/typescript/declare-var/expected.js b/packages/babel-generator/test/fixtures/typescript/declare-var/expected.js new file mode 100644 index 0000000000..e41d5aee0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/declare-var/expected.js @@ -0,0 +1,2 @@ +declare var x; +declare var x: any; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/enum-const/actual.js b/packages/babel-generator/test/fixtures/typescript/enum-const/actual.js new file mode 100644 index 0000000000..6eb417807c --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/enum-const/actual.js @@ -0,0 +1 @@ +const enum E {} diff --git a/packages/babel-generator/test/fixtures/typescript/enum-const/expected.js b/packages/babel-generator/test/fixtures/typescript/enum-const/expected.js new file mode 100644 index 0000000000..c8a36474cb --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/enum-const/expected.js @@ -0,0 +1 @@ +const enum E {} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/enum-declare-const/actual.js b/packages/babel-generator/test/fixtures/typescript/enum-declare-const/actual.js new file mode 100644 index 0000000000..4a3fc75be0 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/enum-declare-const/actual.js @@ -0,0 +1 @@ +declare const enum E {} diff --git a/packages/babel-generator/test/fixtures/typescript/enum-declare-const/expected.js b/packages/babel-generator/test/fixtures/typescript/enum-declare-const/expected.js new file mode 100644 index 0000000000..17ca7bab1b --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/enum-declare-const/expected.js @@ -0,0 +1 @@ +declare const enum E {} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/enum-declare/actual.js b/packages/babel-generator/test/fixtures/typescript/enum-declare/actual.js new file mode 100644 index 0000000000..5218d402d3 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/enum-declare/actual.js @@ -0,0 +1 @@ +declare enum E {} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/enum-declare/expected.js b/packages/babel-generator/test/fixtures/typescript/enum-declare/expected.js new file mode 100644 index 0000000000..5218d402d3 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/enum-declare/expected.js @@ -0,0 +1 @@ +declare enum E {} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/enum-export-const/actual.js b/packages/babel-generator/test/fixtures/typescript/enum-export-const/actual.js new file mode 100644 index 0000000000..6b1e42773f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/enum-export-const/actual.js @@ -0,0 +1 @@ +export const enum E {} diff --git a/packages/babel-generator/test/fixtures/typescript/enum-export-const/expected.js b/packages/babel-generator/test/fixtures/typescript/enum-export-const/expected.js new file mode 100644 index 0000000000..92d2c418c6 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/enum-export-const/expected.js @@ -0,0 +1 @@ +export const enum E {} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/enum-export-declare-const/actual.js b/packages/babel-generator/test/fixtures/typescript/enum-export-declare-const/actual.js new file mode 100644 index 0000000000..e6d28ba285 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/enum-export-declare-const/actual.js @@ -0,0 +1 @@ +export declare const enum E {} diff --git a/packages/babel-generator/test/fixtures/typescript/enum-export-declare-const/expected.js b/packages/babel-generator/test/fixtures/typescript/enum-export-declare-const/expected.js new file mode 100644 index 0000000000..5d43cb595e --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/enum-export-declare-const/expected.js @@ -0,0 +1 @@ +export declare const enum E {} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/enum-export/actual.js b/packages/babel-generator/test/fixtures/typescript/enum-export/actual.js new file mode 100644 index 0000000000..5bda4c84bc --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/enum-export/actual.js @@ -0,0 +1 @@ +export enum E {} diff --git a/packages/babel-generator/test/fixtures/typescript/enum-export/expected.js b/packages/babel-generator/test/fixtures/typescript/enum-export/expected.js new file mode 100644 index 0000000000..30e0d0d731 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/enum-export/expected.js @@ -0,0 +1 @@ +export enum E {} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/enum-members-reserved-words/actual.js b/packages/babel-generator/test/fixtures/typescript/enum-members-reserved-words/actual.js new file mode 100644 index 0000000000..06c4ab796c --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/enum-members-reserved-words/actual.js @@ -0,0 +1,4 @@ +enum E { + const, + default +} diff --git a/packages/babel-generator/test/fixtures/typescript/enum-members-reserved-words/expected.js b/packages/babel-generator/test/fixtures/typescript/enum-members-reserved-words/expected.js new file mode 100644 index 0000000000..24e6fda71d --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/enum-members-reserved-words/expected.js @@ -0,0 +1,4 @@ +enum E { + const, + default, +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/enum-members-strings/actual.js b/packages/babel-generator/test/fixtures/typescript/enum-members-strings/actual.js new file mode 100644 index 0000000000..fe909aa5c4 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/enum-members-strings/actual.js @@ -0,0 +1,4 @@ +enum E { + "foo", + "bar" = 1 +} diff --git a/packages/babel-generator/test/fixtures/typescript/enum-members-strings/expected.js b/packages/babel-generator/test/fixtures/typescript/enum-members-strings/expected.js new file mode 100644 index 0000000000..518cb3b4a4 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/enum-members-strings/expected.js @@ -0,0 +1,4 @@ +enum E { + "foo", + "bar" = 1, +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/enum-members-trailing-comma-with-initializer/actual.js b/packages/babel-generator/test/fixtures/typescript/enum-members-trailing-comma-with-initializer/actual.js new file mode 100644 index 0000000000..0c1f115f61 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/enum-members-trailing-comma-with-initializer/actual.js @@ -0,0 +1,3 @@ +enum E { + A = 0, +} diff --git a/packages/babel-generator/test/fixtures/typescript/enum-members-trailing-comma-with-initializer/expected.js b/packages/babel-generator/test/fixtures/typescript/enum-members-trailing-comma-with-initializer/expected.js new file mode 100644 index 0000000000..e0568eeaa4 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/enum-members-trailing-comma-with-initializer/expected.js @@ -0,0 +1,3 @@ +enum E { + A = 0, +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/enum-members-trailing-comma/actual.js b/packages/babel-generator/test/fixtures/typescript/enum-members-trailing-comma/actual.js new file mode 100644 index 0000000000..7db24478a7 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/enum-members-trailing-comma/actual.js @@ -0,0 +1,3 @@ +enum E { + A, +} diff --git a/packages/babel-generator/test/fixtures/typescript/enum-members-trailing-comma/expected.js b/packages/babel-generator/test/fixtures/typescript/enum-members-trailing-comma/expected.js new file mode 100644 index 0000000000..0552e91f03 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/enum-members-trailing-comma/expected.js @@ -0,0 +1,3 @@ +enum E { + A, +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/enum-members/actual.js b/packages/babel-generator/test/fixtures/typescript/enum-members/actual.js new file mode 100644 index 0000000000..c0d9e76d28 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/enum-members/actual.js @@ -0,0 +1,4 @@ +enum E { + A, + B = 0 +} diff --git a/packages/babel-generator/test/fixtures/typescript/enum-members/expected.js b/packages/babel-generator/test/fixtures/typescript/enum-members/expected.js new file mode 100644 index 0000000000..60a299fa2c --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/enum-members/expected.js @@ -0,0 +1,4 @@ +enum E { + A, + B = 0, +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/export-as-namespace/actual.js b/packages/babel-generator/test/fixtures/typescript/export-as-namespace/actual.js new file mode 100644 index 0000000000..b971448035 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/export-as-namespace/actual.js @@ -0,0 +1 @@ +export as namespace A; diff --git a/packages/babel-generator/test/fixtures/typescript/export-as-namespace/expected.js b/packages/babel-generator/test/fixtures/typescript/export-as-namespace/expected.js new file mode 100644 index 0000000000..f4e6da25c6 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/export-as-namespace/expected.js @@ -0,0 +1 @@ +export as namespace A \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/export-declare/actual.js b/packages/babel-generator/test/fixtures/typescript/export-declare/actual.js new file mode 100644 index 0000000000..58d3f7937e --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/export-declare/actual.js @@ -0,0 +1,7 @@ +export declare const x: number; +export declare function f(): void; +export declare class C {} +export declare interface I {} +export declare type T = number; +export declare module M {} +export declare namespace N {} diff --git a/packages/babel-generator/test/fixtures/typescript/export-declare/expected.js b/packages/babel-generator/test/fixtures/typescript/export-declare/expected.js new file mode 100644 index 0000000000..28d25474ef --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/export-declare/expected.js @@ -0,0 +1,7 @@ +export declare const x: number; +export declare function f(): void; +export declare class C {} +export declare interface I {} +export declare type T = number; +export declare namespace M {} +export declare namespace N {} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/export-equals/actual.js b/packages/babel-generator/test/fixtures/typescript/export-equals/actual.js new file mode 100644 index 0000000000..af251c676f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/export-equals/actual.js @@ -0,0 +1 @@ +export = f; diff --git a/packages/babel-generator/test/fixtures/typescript/export-equals/expected.js b/packages/babel-generator/test/fixtures/typescript/export-equals/expected.js new file mode 100644 index 0000000000..304fd03a8d --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/export-equals/expected.js @@ -0,0 +1 @@ +export = f; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/export-nested-same-name/actual.js b/packages/babel-generator/test/fixtures/typescript/export-nested-same-name/actual.js new file mode 100644 index 0000000000..e0c638df32 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/export-nested-same-name/actual.js @@ -0,0 +1,4 @@ +export const x = 0; +export namespace N { + export const x = 1; +} diff --git a/packages/babel-generator/test/fixtures/typescript/export-nested-same-name/expected.js b/packages/babel-generator/test/fixtures/typescript/export-nested-same-name/expected.js new file mode 100644 index 0000000000..5d550b7aa3 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/export-nested-same-name/expected.js @@ -0,0 +1,4 @@ +export const x = 0; +export namespace N { + export const x = 1; +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/function-annotated/actual.js b/packages/babel-generator/test/fixtures/typescript/function-annotated/actual.js new file mode 100644 index 0000000000..139772fad0 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/function-annotated/actual.js @@ -0,0 +1 @@ +function f(x?: T): T {} diff --git a/packages/babel-generator/test/fixtures/typescript/function-annotated/expected.js b/packages/babel-generator/test/fixtures/typescript/function-annotated/expected.js new file mode 100644 index 0000000000..af3d807440 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/function-annotated/expected.js @@ -0,0 +1 @@ +function f(x?: T): T {} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/function-anonymous/actual.js b/packages/babel-generator/test/fixtures/typescript/function-anonymous/actual.js new file mode 100644 index 0000000000..395ce03c04 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/function-anonymous/actual.js @@ -0,0 +1 @@ +const f = function(x?: T): T {}; diff --git a/packages/babel-generator/test/fixtures/typescript/function-anonymous/expected.js b/packages/babel-generator/test/fixtures/typescript/function-anonymous/expected.js new file mode 100644 index 0000000000..229fb5d5c2 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/function-anonymous/expected.js @@ -0,0 +1 @@ +const f = function (x?: T): T {}; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/function-declare/actual.js b/packages/babel-generator/test/fixtures/typescript/function-declare/actual.js new file mode 100644 index 0000000000..f3a0c553cf --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/function-declare/actual.js @@ -0,0 +1,2 @@ +declare function f(): void; +declare function f(): T; diff --git a/packages/babel-generator/test/fixtures/typescript/function-declare/expected.js b/packages/babel-generator/test/fixtures/typescript/function-declare/expected.js new file mode 100644 index 0000000000..b70c15db1d --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/function-declare/expected.js @@ -0,0 +1,2 @@ +declare function f(): void; +declare function f(): T; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/function-export-default/actual.js b/packages/babel-generator/test/fixtures/typescript/function-export-default/actual.js new file mode 100644 index 0000000000..37e894cdaa --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/function-export-default/actual.js @@ -0,0 +1 @@ +export default function(x?: number): void; diff --git a/packages/babel-generator/test/fixtures/typescript/function-export-default/expected.js b/packages/babel-generator/test/fixtures/typescript/function-export-default/expected.js new file mode 100644 index 0000000000..37110be99c --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/function-export-default/expected.js @@ -0,0 +1 @@ +export default function (x?: number): void; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/function-overloads/actual.js b/packages/babel-generator/test/fixtures/typescript/function-overloads/actual.js new file mode 100644 index 0000000000..2fb36ce1be --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/function-overloads/actual.js @@ -0,0 +1,2 @@ +export function f(x: number): number; +export function f(x: string): string; diff --git a/packages/babel-generator/test/fixtures/typescript/function-overloads/expected.js b/packages/babel-generator/test/fixtures/typescript/function-overloads/expected.js new file mode 100644 index 0000000000..7319b079ac --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/function-overloads/expected.js @@ -0,0 +1,2 @@ +export function f(x: number): number; +export function f(x: string): string; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/function-predicate-types/actual.js b/packages/babel-generator/test/fixtures/typescript/function-predicate-types/actual.js new file mode 100644 index 0000000000..374c71766c --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/function-predicate-types/actual.js @@ -0,0 +1,2 @@ +function f(x: any): x is boolean {} +(function(x: any): x is boolean {}) diff --git a/packages/babel-generator/test/fixtures/typescript/function-predicate-types/expected.js b/packages/babel-generator/test/fixtures/typescript/function-predicate-types/expected.js new file mode 100644 index 0000000000..8e5485ec8f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/function-predicate-types/expected.js @@ -0,0 +1,3 @@ +function f(x: any): x is boolean {} + +(function (x: any): x is boolean {}); \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/import-equals-require/actual.js b/packages/babel-generator/test/fixtures/typescript/import-equals-require/actual.js new file mode 100644 index 0000000000..2c82fffdd9 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/import-equals-require/actual.js @@ -0,0 +1 @@ +import a = require("a"); diff --git a/packages/babel-generator/test/fixtures/typescript/import-equals-require/expected.js b/packages/babel-generator/test/fixtures/typescript/import-equals-require/expected.js new file mode 100644 index 0000000000..7900a6f536 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/import-equals-require/expected.js @@ -0,0 +1 @@ +import a = require("a"); \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/import-equals/actual.js b/packages/babel-generator/test/fixtures/typescript/import-equals/actual.js new file mode 100644 index 0000000000..4e414cfa82 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/import-equals/actual.js @@ -0,0 +1 @@ +import A = B.C; diff --git a/packages/babel-generator/test/fixtures/typescript/import-equals/expected.js b/packages/babel-generator/test/fixtures/typescript/import-equals/expected.js new file mode 100644 index 0000000000..93c9900497 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/import-equals/expected.js @@ -0,0 +1 @@ +import A = B.C; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/import-export-import-require/actual.js b/packages/babel-generator/test/fixtures/typescript/import-export-import-require/actual.js new file mode 100644 index 0000000000..8b6df4184e --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/import-export-import-require/actual.js @@ -0,0 +1 @@ +export import a = require("a"); diff --git a/packages/babel-generator/test/fixtures/typescript/import-export-import-require/expected.js b/packages/babel-generator/test/fixtures/typescript/import-export-import-require/expected.js new file mode 100644 index 0000000000..9e5b737f91 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/import-export-import-require/expected.js @@ -0,0 +1 @@ +export import a = require("a"); \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/import-export-import/actual.js b/packages/babel-generator/test/fixtures/typescript/import-export-import/actual.js new file mode 100644 index 0000000000..fb89f3bc50 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/import-export-import/actual.js @@ -0,0 +1 @@ +export import A = B.C; diff --git a/packages/babel-generator/test/fixtures/typescript/import-export-import/expected.js b/packages/babel-generator/test/fixtures/typescript/import-export-import/expected.js new file mode 100644 index 0000000000..778054c2c8 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/import-export-import/expected.js @@ -0,0 +1 @@ +export import A = B.C; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/import-not-top-level/actual.js b/packages/babel-generator/test/fixtures/typescript/import-not-top-level/actual.js new file mode 100644 index 0000000000..b6278d2b78 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/import-not-top-level/actual.js @@ -0,0 +1,3 @@ +declare module "m" { + import * as a from "a"; +} diff --git a/packages/babel-generator/test/fixtures/typescript/import-not-top-level/expected.js b/packages/babel-generator/test/fixtures/typescript/import-not-top-level/expected.js new file mode 100644 index 0000000000..d9a1913400 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/import-not-top-level/expected.js @@ -0,0 +1,3 @@ +declare module "m" { + import * as a from "a"; +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/interface-call-signature/actual.js b/packages/babel-generator/test/fixtures/typescript/interface-call-signature/actual.js new file mode 100644 index 0000000000..5d6b541719 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-call-signature/actual.js @@ -0,0 +1,3 @@ +interface I { + (x: number): void; +} diff --git a/packages/babel-generator/test/fixtures/typescript/interface-call-signature/expected.js b/packages/babel-generator/test/fixtures/typescript/interface-call-signature/expected.js new file mode 100644 index 0000000000..90b0b85044 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-call-signature/expected.js @@ -0,0 +1,3 @@ +interface I { + (x: number): void +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/interface-construct-signature/actual.js b/packages/babel-generator/test/fixtures/typescript/interface-construct-signature/actual.js new file mode 100644 index 0000000000..d726e4c4ed --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-construct-signature/actual.js @@ -0,0 +1,3 @@ +interface I { + new (x: number): void; +} diff --git a/packages/babel-generator/test/fixtures/typescript/interface-construct-signature/expected.js b/packages/babel-generator/test/fixtures/typescript/interface-construct-signature/expected.js new file mode 100644 index 0000000000..0d29e5753d --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-construct-signature/expected.js @@ -0,0 +1,3 @@ +interface I { + new (x: number): void +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/interface-export/actual.js b/packages/babel-generator/test/fixtures/typescript/interface-export/actual.js new file mode 100644 index 0000000000..509789ea6f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-export/actual.js @@ -0,0 +1,2 @@ +export interface I {} +// `export default` does not work with interfaces diff --git a/packages/babel-generator/test/fixtures/typescript/interface-export/expected.js b/packages/babel-generator/test/fixtures/typescript/interface-export/expected.js new file mode 100644 index 0000000000..ffa2a6741b --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-export/expected.js @@ -0,0 +1 @@ +export interface I {} // `export default` does not work with interfaces \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/interface-extends/actual.js b/packages/babel-generator/test/fixtures/typescript/interface-extends/actual.js new file mode 100644 index 0000000000..8cf474f227 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-extends/actual.js @@ -0,0 +1 @@ +interface I extends X.Y {} diff --git a/packages/babel-generator/test/fixtures/typescript/interface-extends/expected.js b/packages/babel-generator/test/fixtures/typescript/interface-extends/expected.js new file mode 100644 index 0000000000..e70291bd5e --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-extends/expected.js @@ -0,0 +1 @@ +interface I extends X.Y {} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/interface-generic/actual.js b/packages/babel-generator/test/fixtures/typescript/interface-generic/actual.js new file mode 100644 index 0000000000..62f2ede348 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-generic/actual.js @@ -0,0 +1 @@ +interface I {} diff --git a/packages/babel-generator/test/fixtures/typescript/interface-generic/expected.js b/packages/babel-generator/test/fixtures/typescript/interface-generic/expected.js new file mode 100644 index 0000000000..84d40f00b9 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-generic/expected.js @@ -0,0 +1,3 @@ +interface I {} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/interface-index-signature/actual.js b/packages/babel-generator/test/fixtures/typescript/interface-index-signature/actual.js new file mode 100644 index 0000000000..2c676f629f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-index-signature/actual.js @@ -0,0 +1,3 @@ +interface I { + [s: string]: number; +} diff --git a/packages/babel-generator/test/fixtures/typescript/interface-index-signature/expected.js b/packages/babel-generator/test/fixtures/typescript/interface-index-signature/expected.js new file mode 100644 index 0000000000..af710541b7 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-index-signature/expected.js @@ -0,0 +1,3 @@ +interface I { + [s: string]: number; +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/interface-method-computed/actual.js b/packages/babel-generator/test/fixtures/typescript/interface-method-computed/actual.js new file mode 100644 index 0000000000..688dc322af --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-method-computed/actual.js @@ -0,0 +1,4 @@ +interface I { + [Symbol.iterator](): void; + [Symbol.iterator]?(): number; +} diff --git a/packages/babel-generator/test/fixtures/typescript/interface-method-computed/expected.js b/packages/babel-generator/test/fixtures/typescript/interface-method-computed/expected.js new file mode 100644 index 0000000000..a7fa4aceb6 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-method-computed/expected.js @@ -0,0 +1,4 @@ +interface I { + [Symbol.iterator](): void; + [Symbol.iterator]?(): number; +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/interface-method-generic/actual.js b/packages/babel-generator/test/fixtures/typescript/interface-method-generic/actual.js new file mode 100644 index 0000000000..27f962006e --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-method-generic/actual.js @@ -0,0 +1,3 @@ +interface I { + m(): T; +} diff --git a/packages/babel-generator/test/fixtures/typescript/interface-method-generic/expected.js b/packages/babel-generator/test/fixtures/typescript/interface-method-generic/expected.js new file mode 100644 index 0000000000..9c3332e424 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-method-generic/expected.js @@ -0,0 +1,5 @@ +interface I { + m(): T; +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/interface-method-optional/actual.js b/packages/babel-generator/test/fixtures/typescript/interface-method-optional/actual.js new file mode 100644 index 0000000000..9ceae32a53 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-method-optional/actual.js @@ -0,0 +1,3 @@ +interface I { + m?(): void; +} diff --git a/packages/babel-generator/test/fixtures/typescript/interface-method-optional/expected.js b/packages/babel-generator/test/fixtures/typescript/interface-method-optional/expected.js new file mode 100644 index 0000000000..5c065c201b --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-method-optional/expected.js @@ -0,0 +1,3 @@ +interface I { + m?(): void; +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/interface-method-plain/actual.js b/packages/babel-generator/test/fixtures/typescript/interface-method-plain/actual.js new file mode 100644 index 0000000000..8d4d83dcce --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-method-plain/actual.js @@ -0,0 +1,4 @@ +interface I { + m(); + m(x?: number, ...y: number[]): void; +} diff --git a/packages/babel-generator/test/fixtures/typescript/interface-method-plain/expected.js b/packages/babel-generator/test/fixtures/typescript/interface-method-plain/expected.js new file mode 100644 index 0000000000..dffd2439b8 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-method-plain/expected.js @@ -0,0 +1,4 @@ +interface I { + m(); + m(x?: number, ...y: number[]): void; +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/interface-modifiers/actual.js b/packages/babel-generator/test/fixtures/typescript/interface-modifiers/actual.js new file mode 100644 index 0000000000..e5836883ef --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-modifiers/actual.js @@ -0,0 +1,3 @@ +interface I { + readonly x: number; +} diff --git a/packages/babel-generator/test/fixtures/typescript/interface-modifiers/expected.js b/packages/babel-generator/test/fixtures/typescript/interface-modifiers/expected.js new file mode 100644 index 0000000000..11ba1391b8 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-modifiers/expected.js @@ -0,0 +1,3 @@ +interface I { + readonly x: number; +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/interface-properties/actual.js b/packages/babel-generator/test/fixtures/typescript/interface-properties/actual.js new file mode 100644 index 0000000000..94c10ef4f5 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-properties/actual.js @@ -0,0 +1,5 @@ +interface I { + x; + y: number; + z?: number; +} diff --git a/packages/babel-generator/test/fixtures/typescript/interface-properties/expected.js b/packages/babel-generator/test/fixtures/typescript/interface-properties/expected.js new file mode 100644 index 0000000000..1a7083658c --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-properties/expected.js @@ -0,0 +1,5 @@ +interface I { + x; + y: number; + z?: number; +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/interface-property-computed/actual.js b/packages/babel-generator/test/fixtures/typescript/interface-property-computed/actual.js new file mode 100644 index 0000000000..78f3ac4ab0 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-property-computed/actual.js @@ -0,0 +1,4 @@ +interface I { + [Symbol.iterator]: number; + [Symbol.iterator]?: number; +} diff --git a/packages/babel-generator/test/fixtures/typescript/interface-property-computed/expected.js b/packages/babel-generator/test/fixtures/typescript/interface-property-computed/expected.js new file mode 100644 index 0000000000..6b0f1d946f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-property-computed/expected.js @@ -0,0 +1,4 @@ +interface I { + [Symbol.iterator]: number; + [Symbol.iterator]?: number; +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/interface-property-named-public/actual.js b/packages/babel-generator/test/fixtures/typescript/interface-property-named-public/actual.js new file mode 100644 index 0000000000..ef6e1f3bf1 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-property-named-public/actual.js @@ -0,0 +1,3 @@ +interface I { + public: number; +} diff --git a/packages/babel-generator/test/fixtures/typescript/interface-property-named-public/expected.js b/packages/babel-generator/test/fixtures/typescript/interface-property-named-public/expected.js new file mode 100644 index 0000000000..460e18aaf6 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-property-named-public/expected.js @@ -0,0 +1,3 @@ +interface I { + public: number; +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/interface-reserved-method-name/actual.js b/packages/babel-generator/test/fixtures/typescript/interface-reserved-method-name/actual.js new file mode 100644 index 0000000000..76dff7a531 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-reserved-method-name/actual.js @@ -0,0 +1,3 @@ +interface I { + catch(): void; +} diff --git a/packages/babel-generator/test/fixtures/typescript/interface-reserved-method-name/expected.js b/packages/babel-generator/test/fixtures/typescript/interface-reserved-method-name/expected.js new file mode 100644 index 0000000000..12a52d0c83 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-reserved-method-name/expected.js @@ -0,0 +1,3 @@ +interface I { + catch(): void; +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/interface-separators/actual.js b/packages/babel-generator/test/fixtures/typescript/interface-separators/actual.js new file mode 100644 index 0000000000..f8e941cd41 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-separators/actual.js @@ -0,0 +1,6 @@ +interface Comma { x: number, y: number } +interface Semi { x: number; y: number } +interface Newline { + x: number + y: number +} diff --git a/packages/babel-generator/test/fixtures/typescript/interface-separators/expected.js b/packages/babel-generator/test/fixtures/typescript/interface-separators/expected.js new file mode 100644 index 0000000000..50175271b6 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-separators/expected.js @@ -0,0 +1,12 @@ +interface Comma { + x: number; + y: number; +} +interface Semi { + x: number; + y: number; +} +interface Newline { + x: number; + y: number; +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/module-namespace-body-declare/actual.js b/packages/babel-generator/test/fixtures/typescript/module-namespace-body-declare/actual.js new file mode 100644 index 0000000000..2723dc49e2 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/module-namespace-body-declare/actual.js @@ -0,0 +1,3 @@ +declare namespace N { + const x: number; +} diff --git a/packages/babel-generator/test/fixtures/typescript/module-namespace-body-declare/expected.js b/packages/babel-generator/test/fixtures/typescript/module-namespace-body-declare/expected.js new file mode 100644 index 0000000000..0cca18fbfd --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/module-namespace-body-declare/expected.js @@ -0,0 +1,3 @@ +declare namespace N { + const x: number; +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/module-namespace-body-nested-declare/actual.js b/packages/babel-generator/test/fixtures/typescript/module-namespace-body-nested-declare/actual.js new file mode 100644 index 0000000000..8ed35530c9 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/module-namespace-body-nested-declare/actual.js @@ -0,0 +1,5 @@ +declare namespace A { + namespace B { + const x: number; + } +} diff --git a/packages/babel-generator/test/fixtures/typescript/module-namespace-body-nested-declare/expected.js b/packages/babel-generator/test/fixtures/typescript/module-namespace-body-nested-declare/expected.js new file mode 100644 index 0000000000..3af338a793 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/module-namespace-body-nested-declare/expected.js @@ -0,0 +1,5 @@ +declare namespace A { + namespace B { + const x: number; + } +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/module-namespace-body-nested/actual.js b/packages/babel-generator/test/fixtures/typescript/module-namespace-body-nested/actual.js new file mode 100644 index 0000000000..b03744fb9d --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/module-namespace-body-nested/actual.js @@ -0,0 +1,4 @@ +namespace A { + namespace B { + } +} diff --git a/packages/babel-generator/test/fixtures/typescript/module-namespace-body-nested/expected.js b/packages/babel-generator/test/fixtures/typescript/module-namespace-body-nested/expected.js new file mode 100644 index 0000000000..72e0b7ff68 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/module-namespace-body-nested/expected.js @@ -0,0 +1,3 @@ +namespace A { + namespace B {} +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/module-namespace-body/actual.js b/packages/babel-generator/test/fixtures/typescript/module-namespace-body/actual.js new file mode 100644 index 0000000000..fbfadc1859 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/module-namespace-body/actual.js @@ -0,0 +1,3 @@ +namespace N { + const x = 0; +} diff --git a/packages/babel-generator/test/fixtures/typescript/module-namespace-body/expected.js b/packages/babel-generator/test/fixtures/typescript/module-namespace-body/expected.js new file mode 100644 index 0000000000..e8d7169c69 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/module-namespace-body/expected.js @@ -0,0 +1,3 @@ +namespace N { + const x = 0; +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/module-namespace-declare-shorthand/actual.js b/packages/babel-generator/test/fixtures/typescript/module-namespace-declare-shorthand/actual.js new file mode 100644 index 0000000000..b6cc3a564c --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/module-namespace-declare-shorthand/actual.js @@ -0,0 +1 @@ +declare module "m"; diff --git a/packages/babel-generator/test/fixtures/typescript/module-namespace-declare-shorthand/expected.js b/packages/babel-generator/test/fixtures/typescript/module-namespace-declare-shorthand/expected.js new file mode 100644 index 0000000000..bbb8e9ad98 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/module-namespace-declare-shorthand/expected.js @@ -0,0 +1 @@ +declare module "m"; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/module-namespace-global-in-module/actual.js b/packages/babel-generator/test/fixtures/typescript/module-namespace-global-in-module/actual.js new file mode 100644 index 0000000000..8da25cacf8 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/module-namespace-global-in-module/actual.js @@ -0,0 +1,5 @@ +declare module "m" { + global { + var x: number; + } +} diff --git a/packages/babel-generator/test/fixtures/typescript/module-namespace-global-in-module/expected.js b/packages/babel-generator/test/fixtures/typescript/module-namespace-global-in-module/expected.js new file mode 100644 index 0000000000..a387c93a4a --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/module-namespace-global-in-module/expected.js @@ -0,0 +1,5 @@ +declare module "m" { + global { + var x: number; + } +} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/module-namespace-head-declare/actual.js b/packages/babel-generator/test/fixtures/typescript/module-namespace-head-declare/actual.js new file mode 100644 index 0000000000..d70669ebc7 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/module-namespace-head-declare/actual.js @@ -0,0 +1,4 @@ +declare namespace N.M {} +declare module M {} +declare module "m" {} +declare global {} diff --git a/packages/babel-generator/test/fixtures/typescript/module-namespace-head-declare/expected.js b/packages/babel-generator/test/fixtures/typescript/module-namespace-head-declare/expected.js new file mode 100644 index 0000000000..8b09e5f2ea --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/module-namespace-head-declare/expected.js @@ -0,0 +1,4 @@ +declare namespace N.M {} +declare namespace M {} +declare module "m" {} +declare global {} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/module-namespace-head-export/actual.js b/packages/babel-generator/test/fixtures/typescript/module-namespace-head-export/actual.js new file mode 100644 index 0000000000..a3a6c205fa --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/module-namespace-head-export/actual.js @@ -0,0 +1,2 @@ +export namespace X.Y {} +export module X {} diff --git a/packages/babel-generator/test/fixtures/typescript/module-namespace-head-export/expected.js b/packages/babel-generator/test/fixtures/typescript/module-namespace-head-export/expected.js new file mode 100644 index 0000000000..2b4c465ac5 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/module-namespace-head-export/expected.js @@ -0,0 +1,2 @@ +export namespace X.Y {} +export namespace X {} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/module-namespace-head/actual.js b/packages/babel-generator/test/fixtures/typescript/module-namespace-head/actual.js new file mode 100644 index 0000000000..f764e1bd26 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/module-namespace-head/actual.js @@ -0,0 +1,4 @@ +namespace N {} +namespace M.N.O {} +module M {} +module "m" {} diff --git a/packages/babel-generator/test/fixtures/typescript/module-namespace-head/expected.js b/packages/babel-generator/test/fixtures/typescript/module-namespace-head/expected.js new file mode 100644 index 0000000000..5ce9261414 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/module-namespace-head/expected.js @@ -0,0 +1,4 @@ +namespace N {} +namespace M.N.O {} +namespace M {} +module "m" {} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/options.json b/packages/babel-generator/test/fixtures/typescript/options.json new file mode 100644 index 0000000000..fe9bffaa5e --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/tsx-brace-is-block/actual.js b/packages/babel-generator/test/fixtures/typescript/tsx-brace-is-block/actual.js new file mode 100644 index 0000000000..dbe88dfe03 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/tsx-brace-is-block/actual.js @@ -0,0 +1,3 @@ +// Regression test for tokenizer bug where the `{` after `` was considered a JSX interpolation. +class C extends D {} + diff --git a/packages/babel-generator/test/fixtures/typescript/tsx-brace-is-block/expected.js b/packages/babel-generator/test/fixtures/typescript/tsx-brace-is-block/expected.js new file mode 100644 index 0000000000..a83d7031ff --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/tsx-brace-is-block/expected.js @@ -0,0 +1,4 @@ +// Regression test for tokenizer bug where the `{` after `` was considered a JSX interpolation. +class C extends D {} + +; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/tsx-brace-is-block/options.json b/packages/babel-generator/test/fixtures/typescript/tsx-brace-is-block/options.json new file mode 100644 index 0000000000..3a319216ff --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/tsx-brace-is-block/options.json @@ -0,0 +1,4 @@ +{ + "plugins": ["jsx", "typescript"], + "sourceType": "module" +} diff --git a/packages/babel-generator/test/fixtures/typescript/type-alias-declare/actual.js b/packages/babel-generator/test/fixtures/typescript/type-alias-declare/actual.js new file mode 100644 index 0000000000..301931812c --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/type-alias-declare/actual.js @@ -0,0 +1 @@ +declare type T = number; diff --git a/packages/babel-generator/test/fixtures/typescript/type-alias-declare/expected.js b/packages/babel-generator/test/fixtures/typescript/type-alias-declare/expected.js new file mode 100644 index 0000000000..f274feef63 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/type-alias-declare/expected.js @@ -0,0 +1 @@ +declare type T = number; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/type-alias-export/actual.js b/packages/babel-generator/test/fixtures/typescript/type-alias-export/actual.js new file mode 100644 index 0000000000..0ffb0fcdd6 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/type-alias-export/actual.js @@ -0,0 +1,2 @@ +export type T = number; +// `export default type` is not valid. diff --git a/packages/babel-generator/test/fixtures/typescript/type-alias-export/expected.js b/packages/babel-generator/test/fixtures/typescript/type-alias-export/expected.js new file mode 100644 index 0000000000..5530d84e8d --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/type-alias-export/expected.js @@ -0,0 +1 @@ +export type T = number; // `export default type` is not valid. \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/type-alias-generic-complex/actual.js b/packages/babel-generator/test/fixtures/typescript/type-alias-generic-complex/actual.js new file mode 100644 index 0000000000..9fb8928d4f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/type-alias-generic-complex/actual.js @@ -0,0 +1 @@ +type T = Array; diff --git a/packages/babel-generator/test/fixtures/typescript/type-alias-generic-complex/expected.js b/packages/babel-generator/test/fixtures/typescript/type-alias-generic-complex/expected.js new file mode 100644 index 0000000000..ea25906adc --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/type-alias-generic-complex/expected.js @@ -0,0 +1,3 @@ +type T = Array; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/type-alias-generic/actual.js b/packages/babel-generator/test/fixtures/typescript/type-alias-generic/actual.js new file mode 100644 index 0000000000..0e910abfc6 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/type-alias-generic/actual.js @@ -0,0 +1 @@ +type T = U; diff --git a/packages/babel-generator/test/fixtures/typescript/type-alias-generic/expected.js b/packages/babel-generator/test/fixtures/typescript/type-alias-generic/expected.js new file mode 100644 index 0000000000..ee18e2b361 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/type-alias-generic/expected.js @@ -0,0 +1 @@ +type T = U; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/type-alias-plain/actual.js b/packages/babel-generator/test/fixtures/typescript/type-alias-plain/actual.js new file mode 100644 index 0000000000..42126b96d0 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/type-alias-plain/actual.js @@ -0,0 +1 @@ +type T = number; diff --git a/packages/babel-generator/test/fixtures/typescript/type-alias-plain/expected.js b/packages/babel-generator/test/fixtures/typescript/type-alias-plain/expected.js new file mode 100644 index 0000000000..1264a0cd08 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/type-alias-plain/expected.js @@ -0,0 +1 @@ +type T = number; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/type-arguments-call/actual.js b/packages/babel-generator/test/fixtures/typescript/type-arguments-call/actual.js new file mode 100644 index 0000000000..3a4d08a538 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/type-arguments-call/actual.js @@ -0,0 +1,2 @@ +f(); +f(); diff --git a/packages/babel-generator/test/fixtures/typescript/type-arguments-call/expected.js b/packages/babel-generator/test/fixtures/typescript/type-arguments-call/expected.js new file mode 100644 index 0000000000..a2260efd4c --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/type-arguments-call/expected.js @@ -0,0 +1,2 @@ +f(); +f(); \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/type-arguments-new-false-positive/actual.js b/packages/babel-generator/test/fixtures/typescript/type-arguments-new-false-positive/actual.js new file mode 100644 index 0000000000..f703174469 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/type-arguments-new-false-positive/actual.js @@ -0,0 +1 @@ +new A < T; diff --git a/packages/babel-generator/test/fixtures/typescript/type-arguments-new-false-positive/expected.js b/packages/babel-generator/test/fixtures/typescript/type-arguments-new-false-positive/expected.js new file mode 100644 index 0000000000..0a679779ad --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/type-arguments-new-false-positive/expected.js @@ -0,0 +1 @@ +new A() < T; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/type-arguments-new/actual.js b/packages/babel-generator/test/fixtures/typescript/type-arguments-new/actual.js new file mode 100644 index 0000000000..d474bb65c3 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/type-arguments-new/actual.js @@ -0,0 +1,2 @@ +new C(); +new C(); diff --git a/packages/babel-generator/test/fixtures/typescript/type-arguments-new/expected.js b/packages/babel-generator/test/fixtures/typescript/type-arguments-new/expected.js new file mode 100644 index 0000000000..7bceb375be --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/type-arguments-new/expected.js @@ -0,0 +1,2 @@ +new C(); +new C(); \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/types-array/actual.js b/packages/babel-generator/test/fixtures/typescript/types-array/actual.js new file mode 100644 index 0000000000..aff94656eb --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-array/actual.js @@ -0,0 +1 @@ +let arr: number[][]; diff --git a/packages/babel-generator/test/fixtures/typescript/types-array/expected.js b/packages/babel-generator/test/fixtures/typescript/types-array/expected.js new file mode 100644 index 0000000000..c2aaf4f00a --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-array/expected.js @@ -0,0 +1 @@ +let arr: number[][]; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/types-function-generic/actual.js b/packages/babel-generator/test/fixtures/typescript/types-function-generic/actual.js new file mode 100644 index 0000000000..61d8ece714 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-function-generic/actual.js @@ -0,0 +1 @@ +let f: (a: T) => T; diff --git a/packages/babel-generator/test/fixtures/typescript/types-function-generic/expected.js b/packages/babel-generator/test/fixtures/typescript/types-function-generic/expected.js new file mode 100644 index 0000000000..7f531c0eb6 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-function-generic/expected.js @@ -0,0 +1 @@ +let f: (a: T) => T; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/types-function-in-generic/actual.js b/packages/babel-generator/test/fixtures/typescript/types-function-in-generic/actual.js new file mode 100644 index 0000000000..6b9a571a7c --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-function-in-generic/actual.js @@ -0,0 +1 @@ +let x: Array<() => void>; diff --git a/packages/babel-generator/test/fixtures/typescript/types-function-in-generic/expected.js b/packages/babel-generator/test/fixtures/typescript/types-function-in-generic/expected.js new file mode 100644 index 0000000000..25df6bdcd8 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-function-in-generic/expected.js @@ -0,0 +1 @@ +let x: Array<() => void>; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/types-function-with-this/actual.js b/packages/babel-generator/test/fixtures/typescript/types-function-with-this/actual.js new file mode 100644 index 0000000000..cd13ed098d --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-function-with-this/actual.js @@ -0,0 +1 @@ +let f: (this: number) => void; diff --git a/packages/babel-generator/test/fixtures/typescript/types-function-with-this/expected.js b/packages/babel-generator/test/fixtures/typescript/types-function-with-this/expected.js new file mode 100644 index 0000000000..e1a6f59830 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-function-with-this/expected.js @@ -0,0 +1 @@ +let f: (this: number) => void; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/types-function/actual.js b/packages/babel-generator/test/fixtures/typescript/types-function/actual.js new file mode 100644 index 0000000000..15173a1b65 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-function/actual.js @@ -0,0 +1 @@ +let f: (a: number, b?: number, ...c: number[]) => void; diff --git a/packages/babel-generator/test/fixtures/typescript/types-function/expected.js b/packages/babel-generator/test/fixtures/typescript/types-function/expected.js new file mode 100644 index 0000000000..f4aa69bb37 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-function/expected.js @@ -0,0 +1 @@ +let f: (a: number, b?: number, ...c: number[]) => void; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/types-indexed/actual.js b/packages/babel-generator/test/fixtures/typescript/types-indexed/actual.js new file mode 100644 index 0000000000..4a5809fdd5 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-indexed/actual.js @@ -0,0 +1 @@ +let x: T[K]; diff --git a/packages/babel-generator/test/fixtures/typescript/types-indexed/expected.js b/packages/babel-generator/test/fixtures/typescript/types-indexed/expected.js new file mode 100644 index 0000000000..01bb0d35df --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-indexed/expected.js @@ -0,0 +1 @@ +let x: T[K]; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/types-keywords/actual.js b/packages/babel-generator/test/fixtures/typescript/types-keywords/actual.js new file mode 100644 index 0000000000..d2ddfb94bb --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-keywords/actual.js @@ -0,0 +1,10 @@ +let a: any; +let b: boolean; +let ne: never; +let nul: null; +let num: number; +let o: object; +let st: string; +let sy: symbol; +let u: undefined; +let v: void; diff --git a/packages/babel-generator/test/fixtures/typescript/types-keywords/expected.js b/packages/babel-generator/test/fixtures/typescript/types-keywords/expected.js new file mode 100644 index 0000000000..0c6820fbaf --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-keywords/expected.js @@ -0,0 +1,10 @@ +let a: any; +let b: boolean; +let ne: never; +let nul: null; +let num: number; +let o: object; +let st: string; +let sy: symbol; +let u: undefined; +let v: void; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/types-literal-boolean/actual.js b/packages/babel-generator/test/fixtures/typescript/types-literal-boolean/actual.js new file mode 100644 index 0000000000..d2cea8ee69 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-literal-boolean/actual.js @@ -0,0 +1,2 @@ +let x: true; +let x: false; diff --git a/packages/babel-generator/test/fixtures/typescript/types-literal-boolean/expected.js b/packages/babel-generator/test/fixtures/typescript/types-literal-boolean/expected.js new file mode 100644 index 0000000000..2a25bd9d18 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-literal-boolean/expected.js @@ -0,0 +1,2 @@ +let x: true; +let x: false; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/types-literal-number-negative/actual.js b/packages/babel-generator/test/fixtures/typescript/types-literal-number-negative/actual.js new file mode 100644 index 0000000000..48e57ca110 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-literal-number-negative/actual.js @@ -0,0 +1 @@ +let x: -1; diff --git a/packages/babel-generator/test/fixtures/typescript/types-literal-number-negative/expected.js b/packages/babel-generator/test/fixtures/typescript/types-literal-number-negative/expected.js new file mode 100644 index 0000000000..b9af4c28af --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-literal-number-negative/expected.js @@ -0,0 +1 @@ +let x: -1; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/types-literal-number/actual.js b/packages/babel-generator/test/fixtures/typescript/types-literal-number/actual.js new file mode 100644 index 0000000000..1e234e36b8 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-literal-number/actual.js @@ -0,0 +1 @@ +let x: 0; diff --git a/packages/babel-generator/test/fixtures/typescript/types-literal-number/expected.js b/packages/babel-generator/test/fixtures/typescript/types-literal-number/expected.js new file mode 100644 index 0000000000..216142eb5d --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-literal-number/expected.js @@ -0,0 +1 @@ +let x: 0; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/types-literal-string/actual.js b/packages/babel-generator/test/fixtures/typescript/types-literal-string/actual.js new file mode 100644 index 0000000000..926a42ae7e --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-literal-string/actual.js @@ -0,0 +1 @@ +let x: "foo"; diff --git a/packages/babel-generator/test/fixtures/typescript/types-literal-string/expected.js b/packages/babel-generator/test/fixtures/typescript/types-literal-string/expected.js new file mode 100644 index 0000000000..4638f8ebb9 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-literal-string/expected.js @@ -0,0 +1 @@ +let x: "foo"; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/types-mapped/actual.js b/packages/babel-generator/test/fixtures/typescript/types-mapped/actual.js new file mode 100644 index 0000000000..a3a1c9a3b4 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-mapped/actual.js @@ -0,0 +1,2 @@ +let map: { [P in string]: number; }; +let map: { readonly [P in string]?: number; }; diff --git a/packages/babel-generator/test/fixtures/typescript/types-mapped/expected.js b/packages/babel-generator/test/fixtures/typescript/types-mapped/expected.js new file mode 100644 index 0000000000..b2ad412f99 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-mapped/expected.js @@ -0,0 +1,2 @@ +let map: { [P in string]: number }; +let map: { readonly [P in string]?: number }; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/types-parenthesized/actual.js b/packages/babel-generator/test/fixtures/typescript/types-parenthesized/actual.js new file mode 100644 index 0000000000..a8a9d2d955 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-parenthesized/actual.js @@ -0,0 +1 @@ +type T = ({}); diff --git a/packages/babel-generator/test/fixtures/typescript/types-parenthesized/expected.js b/packages/babel-generator/test/fixtures/typescript/types-parenthesized/expected.js new file mode 100644 index 0000000000..77f5f833da --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-parenthesized/expected.js @@ -0,0 +1 @@ +type T = ({}); \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/types-reference-generic-nested/actual.js b/packages/babel-generator/test/fixtures/typescript/types-reference-generic-nested/actual.js new file mode 100644 index 0000000000..e38dfca9d5 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-reference-generic-nested/actual.js @@ -0,0 +1 @@ +let x: Array>; diff --git a/packages/babel-generator/test/fixtures/typescript/types-reference-generic-nested/expected.js b/packages/babel-generator/test/fixtures/typescript/types-reference-generic-nested/expected.js new file mode 100644 index 0000000000..42d582eea4 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-reference-generic-nested/expected.js @@ -0,0 +1 @@ +let x: Array>; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/types-reference-generic/actual.js b/packages/babel-generator/test/fixtures/typescript/types-reference-generic/actual.js new file mode 100644 index 0000000000..4925bd4778 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-reference-generic/actual.js @@ -0,0 +1 @@ +let x: Array; diff --git a/packages/babel-generator/test/fixtures/typescript/types-reference-generic/expected.js b/packages/babel-generator/test/fixtures/typescript/types-reference-generic/expected.js new file mode 100644 index 0000000000..4d67de25ec --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-reference-generic/expected.js @@ -0,0 +1 @@ +let x: Array; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/types-reference/actual.js b/packages/babel-generator/test/fixtures/typescript/types-reference/actual.js new file mode 100644 index 0000000000..330fb1d224 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-reference/actual.js @@ -0,0 +1 @@ +let x: T; diff --git a/packages/babel-generator/test/fixtures/typescript/types-reference/expected.js b/packages/babel-generator/test/fixtures/typescript/types-reference/expected.js new file mode 100644 index 0000000000..4cda87428b --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-reference/expected.js @@ -0,0 +1 @@ +let x: T; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/types-type-literal/actual.js b/packages/babel-generator/test/fixtures/typescript/types-type-literal/actual.js new file mode 100644 index 0000000000..074c0b246a --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-type-literal/actual.js @@ -0,0 +1,2 @@ +let obj: { x: number }; +// Type literals have the same body syntax as interfaces, so see `interface` directory for that. diff --git a/packages/babel-generator/test/fixtures/typescript/types-type-literal/expected.js b/packages/babel-generator/test/fixtures/typescript/types-type-literal/expected.js new file mode 100644 index 0000000000..adadc44f9d --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-type-literal/expected.js @@ -0,0 +1,3 @@ +let obj: { + x: number; +}; // Type literals have the same body syntax as interfaces, so see `interface` directory for that. \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/types-type-operator/actual.js b/packages/babel-generator/test/fixtures/typescript/types-type-operator/actual.js new file mode 100644 index 0000000000..2027543c4e --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-type-operator/actual.js @@ -0,0 +1 @@ +let x: keyof T; diff --git a/packages/babel-generator/test/fixtures/typescript/types-type-operator/expected.js b/packages/babel-generator/test/fixtures/typescript/types-type-operator/expected.js new file mode 100644 index 0000000000..30a9e239e6 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-type-operator/expected.js @@ -0,0 +1 @@ +let x: keyof T; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/types-typeof/actual.js b/packages/babel-generator/test/fixtures/typescript/types-typeof/actual.js new file mode 100644 index 0000000000..eebcd19b13 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-typeof/actual.js @@ -0,0 +1 @@ +let x: typeof y.z; diff --git a/packages/babel-generator/test/fixtures/typescript/types-typeof/expected.js b/packages/babel-generator/test/fixtures/typescript/types-typeof/expected.js new file mode 100644 index 0000000000..8b176ff1a2 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-typeof/expected.js @@ -0,0 +1 @@ +let x: typeof y.z; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/types-union-intersection/actual.js b/packages/babel-generator/test/fixtures/typescript/types-union-intersection/actual.js new file mode 100644 index 0000000000..93f391fdc4 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-union-intersection/actual.js @@ -0,0 +1,4 @@ +let union: number | null | undefined; +let intersection: number & string; +let precedence1: number | string & boolean; +let precedence2: number & string | boolean; diff --git a/packages/babel-generator/test/fixtures/typescript/types-union-intersection/expected.js b/packages/babel-generator/test/fixtures/typescript/types-union-intersection/expected.js new file mode 100644 index 0000000000..8f74eb81d7 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/types-union-intersection/expected.js @@ -0,0 +1,4 @@ +let union: number | null | undefined; +let intersection: number & string; +let precedence1: number | string & boolean; +let precedence2: number & string | boolean; \ No newline at end of file diff --git a/packages/babel-generator/test/generate-typescript-tests.js b/packages/babel-generator/test/generate-typescript-tests.js new file mode 100644 index 0000000000..8ebe7d4699 --- /dev/null +++ b/packages/babel-generator/test/generate-typescript-tests.js @@ -0,0 +1,69 @@ +/* +Copies tests from babylon's TypeScript test suite to babel-generator. +This script assumes that the "babylon" repository is adjacent to "babel". +*/ + +const { + copySync, + emptyDirSync, + existsSync, + readdirSync, + readFileSync, +} = require("fs-extra"); +const { join } = require("path"); + +if (!module.parent) { + const testsFrom = join( + __dirname, + "..", + "..", + "..", + "..", + "babylon", + "test", + "fixtures", + "typescript", + ); + const testsTo = join(__dirname, "fixtures", "typescript"); + + emptyDirSync(testsTo); + + copySync(join(testsFrom, "options.json"), join(testsTo, "options.json")); + + for (const groupName of readdirSync(testsFrom)) { + if (groupName === "options.json") continue; + + const groupFromDir = join(testsFrom, groupName); + const testNames = readdirSync(groupFromDir); + const groupHasOptions = testNames.includes("options.json"); + + for (const testName of testNames) { + if (testName === "options.json") { + continue; + } + + const testFromDir = join(groupFromDir, testName); + const testToDir = join(testsTo, `${groupName}-${testName}`); + + let optionsJsonFrom; + const ownOptions = join(testFromDir, "options.json"); + if (existsSync(ownOptions)) { + const options = JSON.parse(readFileSync(ownOptions)); + // Don't include a test that doesn't parse. + if (options.throws) { + continue; + } + optionsJsonFrom = ownOptions; + } else if (groupHasOptions) { + // Copy group options to each individual one, since we don't have groups here. + optionsJsonFrom = join(groupFromDir, "options.json"); + } + + emptyDirSync(testToDir); + if (optionsJsonFrom) { + copySync(optionsJsonFrom, join(testToDir, "options.json")); + } + copySync(join(testFromDir, "actual.js"), join(testToDir, "actual.js")); + } + } +} diff --git a/packages/babel-generator/test/index.js b/packages/babel-generator/test/index.js index f87929521f..58d7bdcf13 100644 --- a/packages/babel-generator/test/index.js +++ b/packages/babel-generator/test/index.js @@ -11,7 +11,6 @@ import fixtures from "babel-helper-fixtures"; describe("generation", function() { it("completeness", function() { Object.keys(t.VISITOR_KEYS).forEach(function(type) { - if (type.startsWith("TS")) return; // TODO assert.ok(!!Printer.prototype[type], type + " should exist"); });