From 3879fe69bb73a245550dc0601f526a43389cc29c Mon Sep 17 00:00:00 2001 From: Asad Saeeduddin Date: Sat, 20 Feb 2016 12:41:27 -0500 Subject: [PATCH 1/7] Add sample files for testcases --- tests/cases/projects/declarationDir/a.ts | 4 ++++ tests/cases/projects/declarationDir/subfolder/b.ts | 3 +++ tests/cases/projects/declarationDir/subfolder/c.ts | 5 +++++ 3 files changed, 12 insertions(+) create mode 100644 tests/cases/projects/declarationDir/a.ts create mode 100644 tests/cases/projects/declarationDir/subfolder/b.ts create mode 100644 tests/cases/projects/declarationDir/subfolder/c.ts diff --git a/tests/cases/projects/declarationDir/a.ts b/tests/cases/projects/declarationDir/a.ts new file mode 100644 index 00000000000..1b2c4286dc1 --- /dev/null +++ b/tests/cases/projects/declarationDir/a.ts @@ -0,0 +1,4 @@ +import {B} from './subfolder/b'; +export class A { + b: B; +} \ No newline at end of file diff --git a/tests/cases/projects/declarationDir/subfolder/b.ts b/tests/cases/projects/declarationDir/subfolder/b.ts new file mode 100644 index 00000000000..d87c6898050 --- /dev/null +++ b/tests/cases/projects/declarationDir/subfolder/b.ts @@ -0,0 +1,3 @@ +export class B { + +} \ No newline at end of file diff --git a/tests/cases/projects/declarationDir/subfolder/c.ts b/tests/cases/projects/declarationDir/subfolder/c.ts new file mode 100644 index 00000000000..17b540b0346 --- /dev/null +++ b/tests/cases/projects/declarationDir/subfolder/c.ts @@ -0,0 +1,5 @@ +import {A} from '../a'; + +export class C { + a: A; +} \ No newline at end of file From 0d54e54d2ab7d593db4399be43eed026144ef353 Mon Sep 17 00:00:00 2001 From: Asad Saeeduddin Date: Sat, 20 Feb 2016 12:42:35 -0500 Subject: [PATCH 2/7] Add testcases --- tests/cases/project/declarationDir.json | 12 ++++++++++++ tests/cases/project/declarationDir2.json | 13 +++++++++++++ tests/cases/project/declarationDir3.json | 13 +++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 tests/cases/project/declarationDir.json create mode 100644 tests/cases/project/declarationDir2.json create mode 100644 tests/cases/project/declarationDir3.json diff --git a/tests/cases/project/declarationDir.json b/tests/cases/project/declarationDir.json new file mode 100644 index 00000000000..3322694ddbd --- /dev/null +++ b/tests/cases/project/declarationDir.json @@ -0,0 +1,12 @@ +{ + "scenario": "declarationDir: specify declarationDir only", + "projectRoot": "tests/cases/projects/declarationDir", + "inputFiles": [ + "a.ts", + "subfolder/b.ts", + "subfolder/c.ts" + ], + "declaration": true, + "declarationDir": "declarations", + "baselineCheck": true +} \ No newline at end of file diff --git a/tests/cases/project/declarationDir2.json b/tests/cases/project/declarationDir2.json new file mode 100644 index 00000000000..c943ed7f57b --- /dev/null +++ b/tests/cases/project/declarationDir2.json @@ -0,0 +1,13 @@ +{ + "scenario": "declarationDir: specify declarationDir with outDir", + "projectRoot": "tests/cases/projects/declarationDir", + "inputFiles": [ + "a.ts", + "subfolder/b.ts", + "subfolder/c.ts" + ], + "outDir": "out", + "declaration": true, + "declarationDir": "declarations", + "baselineCheck": true +} \ No newline at end of file diff --git a/tests/cases/project/declarationDir3.json b/tests/cases/project/declarationDir3.json new file mode 100644 index 00000000000..b86e454c69d --- /dev/null +++ b/tests/cases/project/declarationDir3.json @@ -0,0 +1,13 @@ +{ + "scenario": "declarationDir: specify declarationDir with bundled output file", + "projectRoot": "tests/cases/projects/declarationDir", + "inputFiles": [ + "a.ts", + "subfolder/b.ts", + "subfolder/c.ts" + ], + "out": "out.js", + "declaration": true, + "declarationDir": "declarations", + "baselineCheck": true +} \ No newline at end of file From 2bf6456a3c42bc43169b94cbedb7eaed222fa46c Mon Sep 17 00:00:00 2001 From: Asad Saeeduddin Date: Sat, 20 Feb 2016 12:45:04 -0500 Subject: [PATCH 3/7] Accept baselines --- .../reference/project/declarationDir/amd/a.js | 9 +++++++ .../declarationDir/amd/declarationDir.json | 26 ++++++++++++++++++ .../declarationDir/amd/declarations/a.d.ts | 4 +++ .../amd/declarations/subfolder/b.d.ts | 2 ++ .../amd/declarations/subfolder/c.d.ts | 4 +++ .../project/declarationDir/amd/subfolder/b.js | 9 +++++++ .../project/declarationDir/amd/subfolder/c.js | 9 +++++++ .../project/declarationDir/node/a.js | 7 +++++ .../declarationDir/node/declarationDir.json | 26 ++++++++++++++++++ .../declarationDir/node/declarations/a.d.ts | 4 +++ .../node/declarations/subfolder/b.d.ts | 2 ++ .../node/declarations/subfolder/c.d.ts | 4 +++ .../declarationDir/node/subfolder/b.js | 7 +++++ .../declarationDir/node/subfolder/c.js | 7 +++++ .../declarationDir2/amd/declarationDir2.json | 27 +++++++++++++++++++ .../declarationDir2/amd/declarations/a.d.ts | 4 +++ .../amd/declarations/subfolder/b.d.ts | 2 ++ .../amd/declarations/subfolder/c.d.ts | 4 +++ .../project/declarationDir2/amd/out/a.js | 9 +++++++ .../declarationDir2/amd/out/subfolder/b.js | 9 +++++++ .../declarationDir2/amd/out/subfolder/c.js | 9 +++++++ .../declarationDir2/node/declarationDir2.json | 27 +++++++++++++++++++ .../declarationDir2/node/declarations/a.d.ts | 4 +++ .../node/declarations/subfolder/b.d.ts | 2 ++ .../node/declarations/subfolder/c.d.ts | 4 +++ .../project/declarationDir2/node/out/a.js | 7 +++++ .../declarationDir2/node/out/subfolder/b.js | 7 +++++ .../declarationDir2/node/out/subfolder/c.js | 7 +++++ .../declarationDir3/amd/declarationDir3.json | 23 ++++++++++++++++ .../project/declarationDir3/amd/out.d.ts | 16 +++++++++++ .../project/declarationDir3/amd/out.js | 27 +++++++++++++++++++ .../node/declarationDir3.errors.txt | 19 +++++++++++++ .../declarationDir3/node/declarationDir3.json | 23 ++++++++++++++++ .../project/declarationDir3/node/out.d.ts | 16 +++++++++++ .../project/declarationDir3/node/out.js | 0 35 files changed, 366 insertions(+) create mode 100644 tests/baselines/reference/project/declarationDir/amd/a.js create mode 100644 tests/baselines/reference/project/declarationDir/amd/declarationDir.json create mode 100644 tests/baselines/reference/project/declarationDir/amd/declarations/a.d.ts create mode 100644 tests/baselines/reference/project/declarationDir/amd/declarations/subfolder/b.d.ts create mode 100644 tests/baselines/reference/project/declarationDir/amd/declarations/subfolder/c.d.ts create mode 100644 tests/baselines/reference/project/declarationDir/amd/subfolder/b.js create mode 100644 tests/baselines/reference/project/declarationDir/amd/subfolder/c.js create mode 100644 tests/baselines/reference/project/declarationDir/node/a.js create mode 100644 tests/baselines/reference/project/declarationDir/node/declarationDir.json create mode 100644 tests/baselines/reference/project/declarationDir/node/declarations/a.d.ts create mode 100644 tests/baselines/reference/project/declarationDir/node/declarations/subfolder/b.d.ts create mode 100644 tests/baselines/reference/project/declarationDir/node/declarations/subfolder/c.d.ts create mode 100644 tests/baselines/reference/project/declarationDir/node/subfolder/b.js create mode 100644 tests/baselines/reference/project/declarationDir/node/subfolder/c.js create mode 100644 tests/baselines/reference/project/declarationDir2/amd/declarationDir2.json create mode 100644 tests/baselines/reference/project/declarationDir2/amd/declarations/a.d.ts create mode 100644 tests/baselines/reference/project/declarationDir2/amd/declarations/subfolder/b.d.ts create mode 100644 tests/baselines/reference/project/declarationDir2/amd/declarations/subfolder/c.d.ts create mode 100644 tests/baselines/reference/project/declarationDir2/amd/out/a.js create mode 100644 tests/baselines/reference/project/declarationDir2/amd/out/subfolder/b.js create mode 100644 tests/baselines/reference/project/declarationDir2/amd/out/subfolder/c.js create mode 100644 tests/baselines/reference/project/declarationDir2/node/declarationDir2.json create mode 100644 tests/baselines/reference/project/declarationDir2/node/declarations/a.d.ts create mode 100644 tests/baselines/reference/project/declarationDir2/node/declarations/subfolder/b.d.ts create mode 100644 tests/baselines/reference/project/declarationDir2/node/declarations/subfolder/c.d.ts create mode 100644 tests/baselines/reference/project/declarationDir2/node/out/a.js create mode 100644 tests/baselines/reference/project/declarationDir2/node/out/subfolder/b.js create mode 100644 tests/baselines/reference/project/declarationDir2/node/out/subfolder/c.js create mode 100644 tests/baselines/reference/project/declarationDir3/amd/declarationDir3.json create mode 100644 tests/baselines/reference/project/declarationDir3/amd/out.d.ts create mode 100644 tests/baselines/reference/project/declarationDir3/amd/out.js create mode 100644 tests/baselines/reference/project/declarationDir3/node/declarationDir3.errors.txt create mode 100644 tests/baselines/reference/project/declarationDir3/node/declarationDir3.json create mode 100644 tests/baselines/reference/project/declarationDir3/node/out.d.ts create mode 100644 tests/baselines/reference/project/declarationDir3/node/out.js diff --git a/tests/baselines/reference/project/declarationDir/amd/a.js b/tests/baselines/reference/project/declarationDir/amd/a.js new file mode 100644 index 00000000000..331c004bd67 --- /dev/null +++ b/tests/baselines/reference/project/declarationDir/amd/a.js @@ -0,0 +1,9 @@ +define(["require", "exports"], function (require, exports) { + "use strict"; + var A = (function () { + function A() { + } + return A; + }()); + exports.A = A; +}); diff --git a/tests/baselines/reference/project/declarationDir/amd/declarationDir.json b/tests/baselines/reference/project/declarationDir/amd/declarationDir.json new file mode 100644 index 00000000000..83e17dc949c --- /dev/null +++ b/tests/baselines/reference/project/declarationDir/amd/declarationDir.json @@ -0,0 +1,26 @@ +{ + "scenario": "declarationDir: specify declarationDir only", + "projectRoot": "tests/cases/projects/declarationDir", + "inputFiles": [ + "a.ts", + "subfolder/b.ts", + "subfolder/c.ts" + ], + "declaration": true, + "declarationDir": "declarations", + "baselineCheck": true, + "resolvedInputFiles": [ + "lib.d.ts", + "subfolder/b.ts", + "a.ts", + "subfolder/c.ts" + ], + "emittedFiles": [ + "subfolder/b.js", + "declarations/subfolder/b.d.ts", + "a.js", + "declarations/a.d.ts", + "subfolder/c.js", + "declarations/subfolder/c.d.ts" + ] +} \ No newline at end of file diff --git a/tests/baselines/reference/project/declarationDir/amd/declarations/a.d.ts b/tests/baselines/reference/project/declarationDir/amd/declarations/a.d.ts new file mode 100644 index 00000000000..d8c7642c262 --- /dev/null +++ b/tests/baselines/reference/project/declarationDir/amd/declarations/a.d.ts @@ -0,0 +1,4 @@ +import { B } from './subfolder/b'; +export declare class A { + b: B; +} diff --git a/tests/baselines/reference/project/declarationDir/amd/declarations/subfolder/b.d.ts b/tests/baselines/reference/project/declarationDir/amd/declarations/subfolder/b.d.ts new file mode 100644 index 00000000000..a03032c2d62 --- /dev/null +++ b/tests/baselines/reference/project/declarationDir/amd/declarations/subfolder/b.d.ts @@ -0,0 +1,2 @@ +export declare class B { +} diff --git a/tests/baselines/reference/project/declarationDir/amd/declarations/subfolder/c.d.ts b/tests/baselines/reference/project/declarationDir/amd/declarations/subfolder/c.d.ts new file mode 100644 index 00000000000..c45525d0c5f --- /dev/null +++ b/tests/baselines/reference/project/declarationDir/amd/declarations/subfolder/c.d.ts @@ -0,0 +1,4 @@ +import { A } from '../a'; +export declare class C { + a: A; +} diff --git a/tests/baselines/reference/project/declarationDir/amd/subfolder/b.js b/tests/baselines/reference/project/declarationDir/amd/subfolder/b.js new file mode 100644 index 00000000000..e2cdda8530b --- /dev/null +++ b/tests/baselines/reference/project/declarationDir/amd/subfolder/b.js @@ -0,0 +1,9 @@ +define(["require", "exports"], function (require, exports) { + "use strict"; + var B = (function () { + function B() { + } + return B; + }()); + exports.B = B; +}); diff --git a/tests/baselines/reference/project/declarationDir/amd/subfolder/c.js b/tests/baselines/reference/project/declarationDir/amd/subfolder/c.js new file mode 100644 index 00000000000..212511f2bf5 --- /dev/null +++ b/tests/baselines/reference/project/declarationDir/amd/subfolder/c.js @@ -0,0 +1,9 @@ +define(["require", "exports"], function (require, exports) { + "use strict"; + var C = (function () { + function C() { + } + return C; + }()); + exports.C = C; +}); diff --git a/tests/baselines/reference/project/declarationDir/node/a.js b/tests/baselines/reference/project/declarationDir/node/a.js new file mode 100644 index 00000000000..35f5adf27f0 --- /dev/null +++ b/tests/baselines/reference/project/declarationDir/node/a.js @@ -0,0 +1,7 @@ +"use strict"; +var A = (function () { + function A() { + } + return A; +}()); +exports.A = A; diff --git a/tests/baselines/reference/project/declarationDir/node/declarationDir.json b/tests/baselines/reference/project/declarationDir/node/declarationDir.json new file mode 100644 index 00000000000..83e17dc949c --- /dev/null +++ b/tests/baselines/reference/project/declarationDir/node/declarationDir.json @@ -0,0 +1,26 @@ +{ + "scenario": "declarationDir: specify declarationDir only", + "projectRoot": "tests/cases/projects/declarationDir", + "inputFiles": [ + "a.ts", + "subfolder/b.ts", + "subfolder/c.ts" + ], + "declaration": true, + "declarationDir": "declarations", + "baselineCheck": true, + "resolvedInputFiles": [ + "lib.d.ts", + "subfolder/b.ts", + "a.ts", + "subfolder/c.ts" + ], + "emittedFiles": [ + "subfolder/b.js", + "declarations/subfolder/b.d.ts", + "a.js", + "declarations/a.d.ts", + "subfolder/c.js", + "declarations/subfolder/c.d.ts" + ] +} \ No newline at end of file diff --git a/tests/baselines/reference/project/declarationDir/node/declarations/a.d.ts b/tests/baselines/reference/project/declarationDir/node/declarations/a.d.ts new file mode 100644 index 00000000000..d8c7642c262 --- /dev/null +++ b/tests/baselines/reference/project/declarationDir/node/declarations/a.d.ts @@ -0,0 +1,4 @@ +import { B } from './subfolder/b'; +export declare class A { + b: B; +} diff --git a/tests/baselines/reference/project/declarationDir/node/declarations/subfolder/b.d.ts b/tests/baselines/reference/project/declarationDir/node/declarations/subfolder/b.d.ts new file mode 100644 index 00000000000..a03032c2d62 --- /dev/null +++ b/tests/baselines/reference/project/declarationDir/node/declarations/subfolder/b.d.ts @@ -0,0 +1,2 @@ +export declare class B { +} diff --git a/tests/baselines/reference/project/declarationDir/node/declarations/subfolder/c.d.ts b/tests/baselines/reference/project/declarationDir/node/declarations/subfolder/c.d.ts new file mode 100644 index 00000000000..c45525d0c5f --- /dev/null +++ b/tests/baselines/reference/project/declarationDir/node/declarations/subfolder/c.d.ts @@ -0,0 +1,4 @@ +import { A } from '../a'; +export declare class C { + a: A; +} diff --git a/tests/baselines/reference/project/declarationDir/node/subfolder/b.js b/tests/baselines/reference/project/declarationDir/node/subfolder/b.js new file mode 100644 index 00000000000..7b46df97ac3 --- /dev/null +++ b/tests/baselines/reference/project/declarationDir/node/subfolder/b.js @@ -0,0 +1,7 @@ +"use strict"; +var B = (function () { + function B() { + } + return B; +}()); +exports.B = B; diff --git a/tests/baselines/reference/project/declarationDir/node/subfolder/c.js b/tests/baselines/reference/project/declarationDir/node/subfolder/c.js new file mode 100644 index 00000000000..65238579edc --- /dev/null +++ b/tests/baselines/reference/project/declarationDir/node/subfolder/c.js @@ -0,0 +1,7 @@ +"use strict"; +var C = (function () { + function C() { + } + return C; +}()); +exports.C = C; diff --git a/tests/baselines/reference/project/declarationDir2/amd/declarationDir2.json b/tests/baselines/reference/project/declarationDir2/amd/declarationDir2.json new file mode 100644 index 00000000000..a746ea58a7c --- /dev/null +++ b/tests/baselines/reference/project/declarationDir2/amd/declarationDir2.json @@ -0,0 +1,27 @@ +{ + "scenario": "declarationDir: specify declarationDir with outDir", + "projectRoot": "tests/cases/projects/declarationDir", + "inputFiles": [ + "a.ts", + "subfolder/b.ts", + "subfolder/c.ts" + ], + "outDir": "out", + "declaration": true, + "declarationDir": "declarations", + "baselineCheck": true, + "resolvedInputFiles": [ + "lib.d.ts", + "subfolder/b.ts", + "a.ts", + "subfolder/c.ts" + ], + "emittedFiles": [ + "out/subfolder/b.js", + "declarations/subfolder/b.d.ts", + "out/a.js", + "declarations/a.d.ts", + "out/subfolder/c.js", + "declarations/subfolder/c.d.ts" + ] +} \ No newline at end of file diff --git a/tests/baselines/reference/project/declarationDir2/amd/declarations/a.d.ts b/tests/baselines/reference/project/declarationDir2/amd/declarations/a.d.ts new file mode 100644 index 00000000000..d8c7642c262 --- /dev/null +++ b/tests/baselines/reference/project/declarationDir2/amd/declarations/a.d.ts @@ -0,0 +1,4 @@ +import { B } from './subfolder/b'; +export declare class A { + b: B; +} diff --git a/tests/baselines/reference/project/declarationDir2/amd/declarations/subfolder/b.d.ts b/tests/baselines/reference/project/declarationDir2/amd/declarations/subfolder/b.d.ts new file mode 100644 index 00000000000..a03032c2d62 --- /dev/null +++ b/tests/baselines/reference/project/declarationDir2/amd/declarations/subfolder/b.d.ts @@ -0,0 +1,2 @@ +export declare class B { +} diff --git a/tests/baselines/reference/project/declarationDir2/amd/declarations/subfolder/c.d.ts b/tests/baselines/reference/project/declarationDir2/amd/declarations/subfolder/c.d.ts new file mode 100644 index 00000000000..c45525d0c5f --- /dev/null +++ b/tests/baselines/reference/project/declarationDir2/amd/declarations/subfolder/c.d.ts @@ -0,0 +1,4 @@ +import { A } from '../a'; +export declare class C { + a: A; +} diff --git a/tests/baselines/reference/project/declarationDir2/amd/out/a.js b/tests/baselines/reference/project/declarationDir2/amd/out/a.js new file mode 100644 index 00000000000..331c004bd67 --- /dev/null +++ b/tests/baselines/reference/project/declarationDir2/amd/out/a.js @@ -0,0 +1,9 @@ +define(["require", "exports"], function (require, exports) { + "use strict"; + var A = (function () { + function A() { + } + return A; + }()); + exports.A = A; +}); diff --git a/tests/baselines/reference/project/declarationDir2/amd/out/subfolder/b.js b/tests/baselines/reference/project/declarationDir2/amd/out/subfolder/b.js new file mode 100644 index 00000000000..e2cdda8530b --- /dev/null +++ b/tests/baselines/reference/project/declarationDir2/amd/out/subfolder/b.js @@ -0,0 +1,9 @@ +define(["require", "exports"], function (require, exports) { + "use strict"; + var B = (function () { + function B() { + } + return B; + }()); + exports.B = B; +}); diff --git a/tests/baselines/reference/project/declarationDir2/amd/out/subfolder/c.js b/tests/baselines/reference/project/declarationDir2/amd/out/subfolder/c.js new file mode 100644 index 00000000000..212511f2bf5 --- /dev/null +++ b/tests/baselines/reference/project/declarationDir2/amd/out/subfolder/c.js @@ -0,0 +1,9 @@ +define(["require", "exports"], function (require, exports) { + "use strict"; + var C = (function () { + function C() { + } + return C; + }()); + exports.C = C; +}); diff --git a/tests/baselines/reference/project/declarationDir2/node/declarationDir2.json b/tests/baselines/reference/project/declarationDir2/node/declarationDir2.json new file mode 100644 index 00000000000..a746ea58a7c --- /dev/null +++ b/tests/baselines/reference/project/declarationDir2/node/declarationDir2.json @@ -0,0 +1,27 @@ +{ + "scenario": "declarationDir: specify declarationDir with outDir", + "projectRoot": "tests/cases/projects/declarationDir", + "inputFiles": [ + "a.ts", + "subfolder/b.ts", + "subfolder/c.ts" + ], + "outDir": "out", + "declaration": true, + "declarationDir": "declarations", + "baselineCheck": true, + "resolvedInputFiles": [ + "lib.d.ts", + "subfolder/b.ts", + "a.ts", + "subfolder/c.ts" + ], + "emittedFiles": [ + "out/subfolder/b.js", + "declarations/subfolder/b.d.ts", + "out/a.js", + "declarations/a.d.ts", + "out/subfolder/c.js", + "declarations/subfolder/c.d.ts" + ] +} \ No newline at end of file diff --git a/tests/baselines/reference/project/declarationDir2/node/declarations/a.d.ts b/tests/baselines/reference/project/declarationDir2/node/declarations/a.d.ts new file mode 100644 index 00000000000..d8c7642c262 --- /dev/null +++ b/tests/baselines/reference/project/declarationDir2/node/declarations/a.d.ts @@ -0,0 +1,4 @@ +import { B } from './subfolder/b'; +export declare class A { + b: B; +} diff --git a/tests/baselines/reference/project/declarationDir2/node/declarations/subfolder/b.d.ts b/tests/baselines/reference/project/declarationDir2/node/declarations/subfolder/b.d.ts new file mode 100644 index 00000000000..a03032c2d62 --- /dev/null +++ b/tests/baselines/reference/project/declarationDir2/node/declarations/subfolder/b.d.ts @@ -0,0 +1,2 @@ +export declare class B { +} diff --git a/tests/baselines/reference/project/declarationDir2/node/declarations/subfolder/c.d.ts b/tests/baselines/reference/project/declarationDir2/node/declarations/subfolder/c.d.ts new file mode 100644 index 00000000000..c45525d0c5f --- /dev/null +++ b/tests/baselines/reference/project/declarationDir2/node/declarations/subfolder/c.d.ts @@ -0,0 +1,4 @@ +import { A } from '../a'; +export declare class C { + a: A; +} diff --git a/tests/baselines/reference/project/declarationDir2/node/out/a.js b/tests/baselines/reference/project/declarationDir2/node/out/a.js new file mode 100644 index 00000000000..35f5adf27f0 --- /dev/null +++ b/tests/baselines/reference/project/declarationDir2/node/out/a.js @@ -0,0 +1,7 @@ +"use strict"; +var A = (function () { + function A() { + } + return A; +}()); +exports.A = A; diff --git a/tests/baselines/reference/project/declarationDir2/node/out/subfolder/b.js b/tests/baselines/reference/project/declarationDir2/node/out/subfolder/b.js new file mode 100644 index 00000000000..7b46df97ac3 --- /dev/null +++ b/tests/baselines/reference/project/declarationDir2/node/out/subfolder/b.js @@ -0,0 +1,7 @@ +"use strict"; +var B = (function () { + function B() { + } + return B; +}()); +exports.B = B; diff --git a/tests/baselines/reference/project/declarationDir2/node/out/subfolder/c.js b/tests/baselines/reference/project/declarationDir2/node/out/subfolder/c.js new file mode 100644 index 00000000000..65238579edc --- /dev/null +++ b/tests/baselines/reference/project/declarationDir2/node/out/subfolder/c.js @@ -0,0 +1,7 @@ +"use strict"; +var C = (function () { + function C() { + } + return C; +}()); +exports.C = C; diff --git a/tests/baselines/reference/project/declarationDir3/amd/declarationDir3.json b/tests/baselines/reference/project/declarationDir3/amd/declarationDir3.json new file mode 100644 index 00000000000..7c26154e17b --- /dev/null +++ b/tests/baselines/reference/project/declarationDir3/amd/declarationDir3.json @@ -0,0 +1,23 @@ +{ + "scenario": "declarationDir: specify declarationDir with bundled output file", + "projectRoot": "tests/cases/projects/declarationDir", + "inputFiles": [ + "a.ts", + "subfolder/b.ts", + "subfolder/c.ts" + ], + "out": "out.js", + "declaration": true, + "declarationDir": "declarations", + "baselineCheck": true, + "resolvedInputFiles": [ + "lib.d.ts", + "subfolder/b.ts", + "a.ts", + "subfolder/c.ts" + ], + "emittedFiles": [ + "out.js", + "out.d.ts" + ] +} \ No newline at end of file diff --git a/tests/baselines/reference/project/declarationDir3/amd/out.d.ts b/tests/baselines/reference/project/declarationDir3/amd/out.d.ts new file mode 100644 index 00000000000..60950f066bc --- /dev/null +++ b/tests/baselines/reference/project/declarationDir3/amd/out.d.ts @@ -0,0 +1,16 @@ +declare module "subfolder/b" { + export class B { + } +} +declare module "a" { + import { B } from "subfolder/b"; + export class A { + b: B; + } +} +declare module "subfolder/c" { + import { A } from "a"; + export class C { + a: A; + } +} diff --git a/tests/baselines/reference/project/declarationDir3/amd/out.js b/tests/baselines/reference/project/declarationDir3/amd/out.js new file mode 100644 index 00000000000..6c49867c908 --- /dev/null +++ b/tests/baselines/reference/project/declarationDir3/amd/out.js @@ -0,0 +1,27 @@ +define("subfolder/b", ["require", "exports"], function (require, exports) { + "use strict"; + var B = (function () { + function B() { + } + return B; + }()); + exports.B = B; +}); +define("a", ["require", "exports"], function (require, exports) { + "use strict"; + var A = (function () { + function A() { + } + return A; + }()); + exports.A = A; +}); +define("subfolder/c", ["require", "exports"], function (require, exports) { + "use strict"; + var C = (function () { + function C() { + } + return C; + }()); + exports.C = C; +}); diff --git a/tests/baselines/reference/project/declarationDir3/node/declarationDir3.errors.txt b/tests/baselines/reference/project/declarationDir3/node/declarationDir3.errors.txt new file mode 100644 index 00000000000..362304ff31b --- /dev/null +++ b/tests/baselines/reference/project/declarationDir3/node/declarationDir3.errors.txt @@ -0,0 +1,19 @@ +error TS6082: Only 'amd' and 'system' modules are supported alongside --out. + + +!!! error TS6082: Only 'amd' and 'system' modules are supported alongside --out. +==== b.ts (0 errors) ==== + export class B { + + } +==== a.ts (0 errors) ==== + import {B} from './subfolder/b'; + export class A { + b: B; + } +==== subfolder/c.ts (0 errors) ==== + import {A} from '../a'; + + export class C { + a: A; + } \ No newline at end of file diff --git a/tests/baselines/reference/project/declarationDir3/node/declarationDir3.json b/tests/baselines/reference/project/declarationDir3/node/declarationDir3.json new file mode 100644 index 00000000000..7c26154e17b --- /dev/null +++ b/tests/baselines/reference/project/declarationDir3/node/declarationDir3.json @@ -0,0 +1,23 @@ +{ + "scenario": "declarationDir: specify declarationDir with bundled output file", + "projectRoot": "tests/cases/projects/declarationDir", + "inputFiles": [ + "a.ts", + "subfolder/b.ts", + "subfolder/c.ts" + ], + "out": "out.js", + "declaration": true, + "declarationDir": "declarations", + "baselineCheck": true, + "resolvedInputFiles": [ + "lib.d.ts", + "subfolder/b.ts", + "a.ts", + "subfolder/c.ts" + ], + "emittedFiles": [ + "out.js", + "out.d.ts" + ] +} \ No newline at end of file diff --git a/tests/baselines/reference/project/declarationDir3/node/out.d.ts b/tests/baselines/reference/project/declarationDir3/node/out.d.ts new file mode 100644 index 00000000000..60950f066bc --- /dev/null +++ b/tests/baselines/reference/project/declarationDir3/node/out.d.ts @@ -0,0 +1,16 @@ +declare module "subfolder/b" { + export class B { + } +} +declare module "a" { + import { B } from "subfolder/b"; + export class A { + b: B; + } +} +declare module "subfolder/c" { + import { A } from "a"; + export class C { + a: A; + } +} diff --git a/tests/baselines/reference/project/declarationDir3/node/out.js b/tests/baselines/reference/project/declarationDir3/node/out.js new file mode 100644 index 00000000000..e69de29bb2d From ba63a48fe1185686900f49bf8423f8aa5ab7172b Mon Sep 17 00:00:00 2001 From: Asad Saeeduddin Date: Sat, 20 Feb 2016 13:27:51 -0500 Subject: [PATCH 4/7] Add declarationDir option --- src/compiler/commandLineParser.ts | 6 ++++++ src/compiler/types.ts | 1 + src/compiler/utilities.ts | 26 ++++++++++++++++---------- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index 86d073f7d49..d29a287b950 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -17,6 +17,12 @@ namespace ts { type: "boolean", description: Diagnostics.Generates_corresponding_d_ts_file, }, + { + name: "declarationDir", + type: "string", + isFilePath: true, + paramType: Diagnostics.DIRECTORY, + }, { name: "diagnostics", type: "boolean", diff --git a/src/compiler/types.ts b/src/compiler/types.ts index ca662d6ac46..c065478a20a 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -2371,6 +2371,7 @@ namespace ts { allowNonTsExtensions?: boolean; charset?: string; declaration?: boolean; + declarationDir?: string; diagnostics?: boolean; emitBOM?: boolean; help?: boolean; diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index d8474f85f6b..40b5462888e 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -2012,6 +2012,16 @@ namespace ts { return emitOutputFilePathWithoutExtension + extension; } + export function getDeclarationEmitOutputFilePath(sourceFile: SourceFile, host: EmitHost) { + const options = host.getCompilerOptions(); + const outputDir = options.declarationDir || options.outDir; // Prefer declaration folder if specified + return options.declaration ? removeFileExtension( + outputDir + ? getSourceFilePathInNewDir(sourceFile, host, outputDir) + : sourceFile.fileName + ) + ".d.ts" : undefined; + } + export function getEmitScriptTarget(compilerOptions: CompilerOptions) { return compilerOptions.target || ScriptTarget.ES3; } @@ -2065,23 +2075,23 @@ namespace ts { const emitFileNames: EmitFileNames = { jsFilePath, sourceMapFilePath: getSourceMapFilePath(jsFilePath, options), - declarationFilePath: !isSourceFileJavaScript(sourceFile) ? getDeclarationEmitFilePath(jsFilePath, options) : undefined + declarationFilePath: !isSourceFileJavaScript(sourceFile) ? getDeclarationEmitOutputFilePath(sourceFile, host) : undefined }; action(emitFileNames, [sourceFile], /*isBundledEmit*/false); } function onBundledEmit(host: EmitHost) { // Can emit only sources that are not declaration file and are either non module code or module with --module or --target es6 specified - const bundledSources = filter(host.getSourceFiles(), - sourceFile => !isDeclarationFile(sourceFile) && // Not a declaration file - (!isExternalModule(sourceFile) || // non module file - (getEmitModuleKind(options) && isExternalModule(sourceFile)))); // module that can emit - note falsy value from getEmitModuleKind means the module kind that shouldn't be emitted + const bundledSources = filter(host.getSourceFiles(), sourceFile => + !isDeclarationFile(sourceFile) // Not a declaration file + && (!isExternalModule(sourceFile) || !!getEmitModuleKind(options))); // and not a module, unless module emit enabled + if (bundledSources.length) { const jsFilePath = options.outFile || options.out; const emitFileNames: EmitFileNames = { jsFilePath, sourceMapFilePath: getSourceMapFilePath(jsFilePath, options), - declarationFilePath: getDeclarationEmitFilePath(jsFilePath, options) + declarationFilePath: options.declaration ? removeFileExtension(jsFilePath) + ".d.ts" : undefined }; action(emitFileNames, bundledSources, /*isBundledEmit*/true); } @@ -2090,10 +2100,6 @@ namespace ts { function getSourceMapFilePath(jsFilePath: string, options: CompilerOptions) { return options.sourceMap ? jsFilePath + ".map" : undefined; } - - function getDeclarationEmitFilePath(jsFilePath: string, options: CompilerOptions) { - return options.declaration ? removeFileExtension(jsFilePath) + ".d.ts" : undefined; - } } export function getSourceFilePathInNewDir(sourceFile: SourceFile, host: EmitHost, newDirPath: string) { From c8aedbf382b615059b922ba8ec6593069ad94e27 Mon Sep 17 00:00:00 2001 From: Asad Saeeduddin Date: Sat, 20 Feb 2016 17:40:39 -0500 Subject: [PATCH 5/7] Address PR feedback: expand ternary return into if block, add check to ensure proper options usage --- src/compiler/program.ts | 4 ++++ src/compiler/utilities.ts | 10 ++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/compiler/program.ts b/src/compiler/program.ts index d41f34df0b3..ef190df6a4f 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -1670,6 +1670,10 @@ namespace ts { } } + if (!options.declaration && options.declarationDir) { + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "declarationDir", "declaration")); + } + const languageVersion = options.target || ScriptTarget.ES3; const outFile = options.outFile || options.out; diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 40b5462888e..9c598da9069 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -2015,11 +2015,13 @@ namespace ts { export function getDeclarationEmitOutputFilePath(sourceFile: SourceFile, host: EmitHost) { const options = host.getCompilerOptions(); const outputDir = options.declarationDir || options.outDir; // Prefer declaration folder if specified - return options.declaration ? removeFileExtension( - outputDir + + if (options.declaration) { + const path = outputDir ? getSourceFilePathInNewDir(sourceFile, host, outputDir) - : sourceFile.fileName - ) + ".d.ts" : undefined; + : sourceFile.fileName; + return removeFileExtension(path) + ".d.ts"; + } } export function getEmitScriptTarget(compilerOptions: CompilerOptions) { From dea1372b9ae12e8b3a7c183e3abda97796af2f48 Mon Sep 17 00:00:00 2001 From: Asad Saeeduddin Date: Tue, 23 Feb 2016 15:12:06 -0500 Subject: [PATCH 6/7] Update baselines to make declarationDir invalid alongside out or outFile --- .../amd/declarationDir3.errors.txt | 19 +++++++++++++++++++ .../node/declarationDir3.errors.txt | 2 ++ 2 files changed, 21 insertions(+) create mode 100644 tests/baselines/reference/project/declarationDir3/amd/declarationDir3.errors.txt diff --git a/tests/baselines/reference/project/declarationDir3/amd/declarationDir3.errors.txt b/tests/baselines/reference/project/declarationDir3/amd/declarationDir3.errors.txt new file mode 100644 index 00000000000..a152ace6f11 --- /dev/null +++ b/tests/baselines/reference/project/declarationDir3/amd/declarationDir3.errors.txt @@ -0,0 +1,19 @@ +error TS5053: Option 'declarationDir' cannot be specified with option 'out'. + + +!!! error TS5053: Option 'declarationDir' cannot be specified with option 'out'. +==== b.ts (0 errors) ==== + export class B { + + } +==== a.ts (0 errors) ==== + import {B} from './subfolder/b'; + export class A { + b: B; + } +==== subfolder/c.ts (0 errors) ==== + import {A} from '../a'; + + export class C { + a: A; + } \ No newline at end of file diff --git a/tests/baselines/reference/project/declarationDir3/node/declarationDir3.errors.txt b/tests/baselines/reference/project/declarationDir3/node/declarationDir3.errors.txt index 362304ff31b..19e15ce8fef 100644 --- a/tests/baselines/reference/project/declarationDir3/node/declarationDir3.errors.txt +++ b/tests/baselines/reference/project/declarationDir3/node/declarationDir3.errors.txt @@ -1,6 +1,8 @@ +error TS5053: Option 'declarationDir' cannot be specified with option 'out'. error TS6082: Only 'amd' and 'system' modules are supported alongside --out. +!!! error TS5053: Option 'declarationDir' cannot be specified with option 'out'. !!! error TS6082: Only 'amd' and 'system' modules are supported alongside --out. ==== b.ts (0 errors) ==== export class B { From f251768f32a9d4f5b8017628a731b0537106e211 Mon Sep 17 00:00:00 2001 From: Asad Saeeduddin Date: Tue, 23 Feb 2016 15:12:52 -0500 Subject: [PATCH 7/7] Make declarationDir invalid alongside out or outFile --- src/compiler/program.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/compiler/program.ts b/src/compiler/program.ts index ef190df6a4f..2f832e72c51 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -1670,8 +1670,13 @@ namespace ts { } } - if (!options.declaration && options.declarationDir) { - programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "declarationDir", "declaration")); + if (options.declarationDir) { + if (!options.declaration) { + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "declarationDir", "declaration")); + } + if (options.out || options.outFile) { + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "declarationDir", options.out ? "out" : "outFile")); + } } const languageVersion = options.target || ScriptTarget.ES3;