diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/constructor-1/input.ts b/crates/swc_ecma_transforms_typescript/tests/fixture/constructor-1/input.ts new file mode 100644 index 000000000000..c8676c0c8ac7 --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/constructor-1/input.ts @@ -0,0 +1,3 @@ +class Foo { + constructor(public readonly foo) { } +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/constructor-1/output.js b/crates/swc_ecma_transforms_typescript/tests/fixture/constructor-1/output.js new file mode 100644 index 000000000000..8fa300f54ada --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/constructor-1/output.js @@ -0,0 +1,5 @@ +class Foo { + constructor(foo){ + this.foo = foo; + } +} diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/constructor-2/input.ts b/crates/swc_ecma_transforms_typescript/tests/fixture/constructor-2/input.ts new file mode 100644 index 000000000000..5d7d8ea11fe7 --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/constructor-2/input.ts @@ -0,0 +1,5 @@ +class Foo { + constructor(readonly foo) { + this.bar = 1; + } +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/constructor-2/output.js b/crates/swc_ecma_transforms_typescript/tests/fixture/constructor-2/output.js new file mode 100644 index 000000000000..c65882df2d5a --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/constructor-2/output.js @@ -0,0 +1,6 @@ +class Foo { + constructor(foo){ + this.foo = foo; + this.bar = 1; + } +} diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/export-equals/input.ts b/crates/swc_ecma_transforms_typescript/tests/fixture/export-equals/input.ts new file mode 100644 index 000000000000..b45d9ab808f3 --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/export-equals/input.ts @@ -0,0 +1 @@ +export = Foo \ No newline at end of file diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/export-equals/output.js b/crates/swc_ecma_transforms_typescript/tests/fixture/export-equals/output.js new file mode 100644 index 000000000000..20f0003732fd --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/export-equals/output.js @@ -0,0 +1 @@ +module.exports = Foo; diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/export-import/input.ts b/crates/swc_ecma_transforms_typescript/tests/fixture/export-import/input.ts new file mode 100644 index 000000000000..7c8ea12e279d --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/export-import/input.ts @@ -0,0 +1 @@ +export import A = B \ No newline at end of file diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/export-import/output.js b/crates/swc_ecma_transforms_typescript/tests/fixture/export-import/output.js new file mode 100644 index 000000000000..a731c4b372a1 --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/export-import/output.js @@ -0,0 +1 @@ +export var A = B; diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/issue-179/1/input.ts b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-179/1/input.ts new file mode 100644 index 000000000000..8978b783057a --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-179/1/input.ts @@ -0,0 +1,2 @@ +import { Types } from 'other'; +const a: Types.foo = {}; \ No newline at end of file diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/issue-179/1/output.js b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-179/1/output.js new file mode 100644 index 000000000000..673c2e1d089e --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-179/1/output.js @@ -0,0 +1 @@ +const a = {}; diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/issue-179/2/input.ts b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-179/2/input.ts new file mode 100644 index 000000000000..3d1abef76fb8 --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-179/2/input.ts @@ -0,0 +1,2 @@ +import { Types } from 'other'; +const a: Types = Types.foo; \ No newline at end of file diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/issue-179/2/output.js b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-179/2/output.js new file mode 100644 index 000000000000..930c29db8557 --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-179/2/output.js @@ -0,0 +1,2 @@ +import { Types } from 'other'; +const a = Types.foo; diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/issue-196/1/input.ts b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-196/1/input.ts new file mode 100644 index 000000000000..159619d198a8 --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-196/1/input.ts @@ -0,0 +1 @@ +export type Link = { key: string; text: string }; \ No newline at end of file diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/issue-196/2/input.ts b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-196/2/input.ts new file mode 100644 index 000000000000..637fb531c84a --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-196/2/input.ts @@ -0,0 +1,2 @@ +type Link = { key: string; text: string }; +export { Link } \ No newline at end of file diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/issue-196/3/input.ts b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-196/3/input.ts new file mode 100644 index 000000000000..2a6ddccb00ec --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-196/3/input.ts @@ -0,0 +1,3 @@ +type Link = { key: string; text: string }; +const Link = 'Boo'; +export { Link } \ No newline at end of file diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/issue-196/3/output.js b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-196/3/output.js new file mode 100644 index 000000000000..2ab0492c2492 --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-196/3/output.js @@ -0,0 +1,2 @@ +const Link = 'Boo'; +export { Link }; diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/issue-236/input.ts b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-236/input.ts new file mode 100644 index 000000000000..332ba4ba9a34 --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-236/input.ts @@ -0,0 +1 @@ +function foo(this: any, $scope: angular.IScope) { } \ No newline at end of file diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/issue-236/output.js b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-236/output.js new file mode 100644 index 000000000000..3931cf2162fe --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-236/output.js @@ -0,0 +1 @@ +function foo($scope) {} diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/issue-357/input.ts b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-357/input.ts new file mode 100644 index 000000000000..3b8b6c098543 --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-357/input.ts @@ -0,0 +1,23 @@ +export function addProp( + obj: T, + prop: K, + value: V +): T & { [x in K]: V }; +export function addProp( + prop: K, + value: V +): (obj: T) => T & { [x in K]: V }; + +export function addProp(arg1: any, arg2: any, arg3?: any): any { + if (arguments.length === 2) { + return (object: any) => _addProp(object, arg1, arg2); + } + return _addProp(arg1, arg2, arg3); +} + +function _addProp(obj: any, prop: string, value: any) { + return { + ...obj, + [prop]: value, + }; +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/issue-357/output.js b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-357/output.js new file mode 100644 index 000000000000..c79df1df1677 --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-357/output.js @@ -0,0 +1,12 @@ +export function addProp(arg1, arg2, arg3) { + if (arguments.length === 2) { + return (object)=>_addProp(object, arg1, arg2); + } + return _addProp(arg1, arg2, arg3); +} +function _addProp(obj, prop, value) { + return { + ...obj, + [prop]: value + }; +} diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/issue-366/1/input.ts b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-366/1/input.ts new file mode 100644 index 000000000000..43d6132ac7a6 --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-366/1/input.ts @@ -0,0 +1,5 @@ +class App { + public enter?(): void; + public leave?(): void; + public destroy?(): void; +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/issue-366/1/output.js b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-366/1/output.js new file mode 100644 index 000000000000..035df9ba8d0e --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-366/1/output.js @@ -0,0 +1,2 @@ +class App { +} diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/issue-366/2/input.ts b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-366/2/input.ts new file mode 100644 index 000000000000..25d05fc68efb --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-366/2/input.ts @@ -0,0 +1,2 @@ +function enter(): string; +function enter(foo: string): number; \ No newline at end of file diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/issue-392/1/input.ts b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-392/1/input.ts new file mode 100644 index 000000000000..1e656b499714 --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-392/1/input.ts @@ -0,0 +1,2 @@ +import { PlainObject } from 'simplytyped'; +const dict: PlainObject = {}; diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/issue-392/1/output.js b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-392/1/output.js new file mode 100644 index 000000000000..1866bccd302c --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-392/1/output.js @@ -0,0 +1 @@ +const dict = {}; diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/private-method-overload-and-abstract/input.ts b/crates/swc_ecma_transforms_typescript/tests/fixture/private-method-overload-and-abstract/input.ts new file mode 100644 index 000000000000..f5d8a79ed11c --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/private-method-overload-and-abstract/input.ts @@ -0,0 +1,7 @@ +class test { + #test(); + #test() { + } + + abstract #test(); +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/private-method-overload-and-abstract/output.js b/crates/swc_ecma_transforms_typescript/tests/fixture/private-method-overload-and-abstract/output.js new file mode 100644 index 000000000000..13c3af24fba3 --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/private-method-overload-and-abstract/output.js @@ -0,0 +1,7 @@ +var _test = /*#__PURE__*/ new WeakSet(); +class test { + constructor(){ + _classPrivateMethodInit(this, _test); + } +} +function test1() {} diff --git a/crates/swc_ecma_transforms_typescript/tests/strip.rs b/crates/swc_ecma_transforms_typescript/tests/strip.rs index 6974d86f6045..f5688d372cb9 100644 --- a/crates/swc_ecma_transforms_typescript/tests/strip.rs +++ b/crates/swc_ecma_transforms_typescript/tests/strip.rs @@ -109,172 +109,8 @@ test!( }" ); -to!( - constructor_01, - "class Foo { - constructor(public readonly foo) {} -}", - "class Foo { - constructor(foo) { - this.foo = foo; - } -}" -); - -to!( - constructor_02, - "class Foo { - constructor(readonly foo) { - this.bar = 1; - } -}", - "class Foo { - constructor(foo) { - this.foo = foo; - this.bar = 1; - } -}" -); - -to!( - private_method_overload_and_abstract, - "class test { - #test(); - #test() { - } - - abstract #test(); -}", - "var _test = new WeakSet(); - class test { - constructor(){ - _classPrivateMethodInit(this, _test); - } - } - function test1() {} -" -); - -to!(export_import, "export import A = B", "export var A = B;"); - -to!(export_equals, "export = Foo", "module.exports = Foo;"); - -to!( - issue_196_01, - "export type Link = { key: string; text: string };", - "" -); - -to!( - issue_196_02, - "type Link = { key: string; text: string }; -export { Link };", - "" -); - -to!( - issue_196_03, - "type Link = { key: string; text: string }; -const Link = 'Boo'; -export { Link };", - "const Link = 'Boo'; -export { Link };" -); - // TODO: Test function / variable hoisting -to!( - issue_179_01, - "import {Types} from 'other'; -const a: Types.foo = {};", - "const a = {};" -); - -to!( - issue_179_02, - "import {Types} from 'other'; -const a: Types = Types.foo;", - "import {Types} from 'other'; -const a = Types.foo;" -); - -to!( - issue_236, - "function foo(this: any, $scope: angular.IScope){}", - "function foo($scope){}" -); - -to!( - issue_357, - "export function addProp( - obj: T, - prop: K, - value: V -): T & { [x in K]: V }; -export function addProp( - prop: K, - value: V -): (obj: T) => T & { [x in K]: V }; - -export function addProp(arg1: any, arg2: any, arg3?: any): any { - if (arguments.length === 2) { - return (object: any) => _addProp(object, arg1, arg2); - } - return _addProp(arg1, arg2, arg3); -} - -function _addProp(obj: any, prop: string, value: any) { - return { - ...obj, - [prop]: value, - }; -}", - "export function addProp(arg1, arg2, arg3) { - if (arguments.length === 2) { - return (object) => _addProp(object, arg1, arg2); - } - return _addProp(arg1, arg2, arg3); -} - -function _addProp(obj, prop, value) { - return { - ...obj, - [prop]: value, - }; -} -" -); - -to!( - issue_366_01, - " -class App { - public enter?(): void; - public leave?(): void; - public destroy?(): void; -}", - "class App {}" -); - -to!( - issue_366_02, - " -function enter(): string; -function enter(foo: string): number; -", - "" -); - -to!( - issue_392_1, - " -import { PlainObject } from 'simplytyped'; -const dict: PlainObject = {}; -", - " -const dict = {};" -); - test!( ::swc_ecma_parser::Syntax::Typescript(Default::default()), |_| tr(),