Merge branch 'whitneyit-feature/noEmitExtends'
This commit is contained in:
commit
689c09cb10
1
bin/typescript.d.ts
vendored
1
bin/typescript.d.ts
vendored
|
@ -1095,6 +1095,7 @@ declare module "typescript" {
|
||||||
mapRoot?: string;
|
mapRoot?: string;
|
||||||
module?: ModuleKind;
|
module?: ModuleKind;
|
||||||
noEmit?: boolean;
|
noEmit?: boolean;
|
||||||
|
noEmitHelpers?: boolean;
|
||||||
noEmitOnError?: boolean;
|
noEmitOnError?: boolean;
|
||||||
noErrorTruncation?: boolean;
|
noErrorTruncation?: boolean;
|
||||||
noImplicitAny?: boolean;
|
noImplicitAny?: boolean;
|
||||||
|
|
1
bin/typescriptServices.d.ts
vendored
1
bin/typescriptServices.d.ts
vendored
|
@ -1095,6 +1095,7 @@ declare module ts {
|
||||||
mapRoot?: string;
|
mapRoot?: string;
|
||||||
module?: ModuleKind;
|
module?: ModuleKind;
|
||||||
noEmit?: boolean;
|
noEmit?: boolean;
|
||||||
|
noEmitHelpers?: boolean;
|
||||||
noEmitOnError?: boolean;
|
noEmitOnError?: boolean;
|
||||||
noErrorTruncation?: boolean;
|
noErrorTruncation?: boolean;
|
||||||
noImplicitAny?: boolean;
|
noImplicitAny?: boolean;
|
||||||
|
|
|
@ -71,6 +71,10 @@ module ts {
|
||||||
type: "boolean",
|
type: "boolean",
|
||||||
description: Diagnostics.Do_not_emit_outputs,
|
description: Diagnostics.Do_not_emit_outputs,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "noEmitHelpers",
|
||||||
|
type: "boolean"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "noEmitOnError",
|
name: "noEmitOnError",
|
||||||
type: "boolean",
|
type: "boolean",
|
||||||
|
|
|
@ -5614,6 +5614,9 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
||||||
|
|
||||||
// emit prologue directives prior to __extends
|
// emit prologue directives prior to __extends
|
||||||
var startIndex = emitDirectivePrologues(node.statements, /*startWithNewLine*/ false);
|
var startIndex = emitDirectivePrologues(node.statements, /*startWithNewLine*/ false);
|
||||||
|
|
||||||
|
// Only emit helpers if the user did not say otherwise.
|
||||||
|
if (!compilerOptions.noEmitHelpers) {
|
||||||
// Only Emit __extends function when target ES5.
|
// Only Emit __extends function when target ES5.
|
||||||
// For target ES6 and above, we can emit classDeclaration as is.
|
// For target ES6 and above, we can emit classDeclaration as is.
|
||||||
if ((languageVersion < ScriptTarget.ES6) && (!extendsEmitted && resolver.getNodeCheckFlags(node) & NodeCheckFlags.EmitExtends)) {
|
if ((languageVersion < ScriptTarget.ES6) && (!extendsEmitted && resolver.getNodeCheckFlags(node) & NodeCheckFlags.EmitExtends)) {
|
||||||
|
@ -5633,6 +5636,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
||||||
writeLines(paramHelper);
|
writeLines(paramHelper);
|
||||||
paramEmitted = true;
|
paramEmitted = true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (isExternalModule(node) || compilerOptions.separateCompilation) {
|
if (isExternalModule(node) || compilerOptions.separateCompilation) {
|
||||||
if (languageVersion >= ScriptTarget.ES6) {
|
if (languageVersion >= ScriptTarget.ES6) {
|
||||||
|
|
|
@ -1657,6 +1657,7 @@ module ts {
|
||||||
mapRoot?: string;
|
mapRoot?: string;
|
||||||
module?: ModuleKind;
|
module?: ModuleKind;
|
||||||
noEmit?: boolean;
|
noEmit?: boolean;
|
||||||
|
noEmitHelpers?: boolean;
|
||||||
noEmitOnError?: boolean;
|
noEmitOnError?: boolean;
|
||||||
noErrorTruncation?: boolean;
|
noErrorTruncation?: boolean;
|
||||||
noImplicitAny?: boolean;
|
noImplicitAny?: boolean;
|
||||||
|
|
|
@ -990,6 +990,14 @@ module Harness {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'emitdecoratormetadata':
|
||||||
|
options.emitDecoratorMetadata = setting.value === 'true';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'noemithelpers':
|
||||||
|
options.noEmitHelpers = setting.value === 'true';
|
||||||
|
break;
|
||||||
|
|
||||||
case 'noemitonerror':
|
case 'noemitonerror':
|
||||||
options.noEmitOnError = !!setting.value;
|
options.noEmitOnError = !!setting.value;
|
||||||
break;
|
break;
|
||||||
|
@ -1477,12 +1485,12 @@ module Harness {
|
||||||
|
|
||||||
// List of allowed metadata names
|
// List of allowed metadata names
|
||||||
var fileMetadataNames = ["filename", "comments", "declaration", "module",
|
var fileMetadataNames = ["filename", "comments", "declaration", "module",
|
||||||
"nolib", "sourcemap", "target", "out", "outdir", "noemitonerror",
|
"nolib", "sourcemap", "target", "out", "outdir", "noemithelpers", "noemitonerror",
|
||||||
"noimplicitany", "noresolve", "newline", "newlines", "emitbom",
|
"noimplicitany", "noresolve", "newline", "newlines", "emitbom",
|
||||||
"errortruncation", "usecasesensitivefilenames", "preserveconstenums",
|
"errortruncation", "usecasesensitivefilenames", "preserveconstenums",
|
||||||
"includebuiltfile", "suppressimplicitanyindexerrors", "stripinternal",
|
"includebuiltfile", "suppressimplicitanyindexerrors", "stripinternal",
|
||||||
"separatecompilation", "inlinesourcemap", "maproot", "sourceroot",
|
"separatecompilation", "inlinesourcemap", "maproot", "sourceroot",
|
||||||
"inlinesources"];
|
"inlinesources", "emitdecoratormetadata"];
|
||||||
|
|
||||||
function extractCompilerSettings(content: string): CompilerSetting[] {
|
function extractCompilerSettings(content: string): CompilerSetting[] {
|
||||||
|
|
||||||
|
|
19
tests/baselines/reference/noEmitHelpers.js
Normal file
19
tests/baselines/reference/noEmitHelpers.js
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
//// [noEmitHelpers.ts]
|
||||||
|
|
||||||
|
class A { }
|
||||||
|
class B extends A { }
|
||||||
|
|
||||||
|
|
||||||
|
//// [noEmitHelpers.js]
|
||||||
|
var A = (function () {
|
||||||
|
function A() {
|
||||||
|
}
|
||||||
|
return A;
|
||||||
|
})();
|
||||||
|
var B = (function (_super) {
|
||||||
|
__extends(B, _super);
|
||||||
|
function B() {
|
||||||
|
_super.apply(this, arguments);
|
||||||
|
}
|
||||||
|
return B;
|
||||||
|
})(A);
|
9
tests/baselines/reference/noEmitHelpers.symbols
Normal file
9
tests/baselines/reference/noEmitHelpers.symbols
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
=== tests/cases/compiler/noEmitHelpers.ts ===
|
||||||
|
|
||||||
|
class A { }
|
||||||
|
>A : Symbol(A, Decl(noEmitHelpers.ts, 0, 0))
|
||||||
|
|
||||||
|
class B extends A { }
|
||||||
|
>B : Symbol(B, Decl(noEmitHelpers.ts, 1, 11))
|
||||||
|
>A : Symbol(A, Decl(noEmitHelpers.ts, 0, 0))
|
||||||
|
|
9
tests/baselines/reference/noEmitHelpers.types
Normal file
9
tests/baselines/reference/noEmitHelpers.types
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
=== tests/cases/compiler/noEmitHelpers.ts ===
|
||||||
|
|
||||||
|
class A { }
|
||||||
|
>A : A
|
||||||
|
|
||||||
|
class B extends A { }
|
||||||
|
>B : B
|
||||||
|
>A : A
|
||||||
|
|
22
tests/baselines/reference/noEmitHelpers2.js
Normal file
22
tests/baselines/reference/noEmitHelpers2.js
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
//// [noEmitHelpers2.ts]
|
||||||
|
|
||||||
|
function decorator() { }
|
||||||
|
|
||||||
|
@decorator
|
||||||
|
class A {
|
||||||
|
constructor(a: number, @decorator b: string) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//// [noEmitHelpers2.js]
|
||||||
|
function decorator() { }
|
||||||
|
var A = (function () {
|
||||||
|
function A(a, b) {
|
||||||
|
}
|
||||||
|
A = __decorate([
|
||||||
|
decorator,
|
||||||
|
__param(1, decorator),
|
||||||
|
__metadata('design:paramtypes', [Number, String])
|
||||||
|
], A);
|
||||||
|
return A;
|
||||||
|
})();
|
17
tests/baselines/reference/noEmitHelpers2.symbols
Normal file
17
tests/baselines/reference/noEmitHelpers2.symbols
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
=== tests/cases/compiler/noEmitHelpers2.ts ===
|
||||||
|
|
||||||
|
function decorator() { }
|
||||||
|
>decorator : Symbol(decorator, Decl(noEmitHelpers2.ts, 0, 0))
|
||||||
|
|
||||||
|
@decorator
|
||||||
|
>decorator : Symbol(decorator, Decl(noEmitHelpers2.ts, 0, 0))
|
||||||
|
|
||||||
|
class A {
|
||||||
|
>A : Symbol(A, Decl(noEmitHelpers2.ts, 1, 24))
|
||||||
|
|
||||||
|
constructor(a: number, @decorator b: string) {
|
||||||
|
>a : Symbol(a, Decl(noEmitHelpers2.ts, 5, 16))
|
||||||
|
>decorator : Symbol(decorator, Decl(noEmitHelpers2.ts, 0, 0))
|
||||||
|
>b : Symbol(b, Decl(noEmitHelpers2.ts, 5, 26))
|
||||||
|
}
|
||||||
|
}
|
17
tests/baselines/reference/noEmitHelpers2.types
Normal file
17
tests/baselines/reference/noEmitHelpers2.types
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
=== tests/cases/compiler/noEmitHelpers2.ts ===
|
||||||
|
|
||||||
|
function decorator() { }
|
||||||
|
>decorator : () => void
|
||||||
|
|
||||||
|
@decorator
|
||||||
|
>decorator : () => void
|
||||||
|
|
||||||
|
class A {
|
||||||
|
>A : A
|
||||||
|
|
||||||
|
constructor(a: number, @decorator b: string) {
|
||||||
|
>a : number
|
||||||
|
>decorator : () => void
|
||||||
|
>b : string
|
||||||
|
}
|
||||||
|
}
|
4
tests/cases/compiler/noEmitHelpers.ts
Normal file
4
tests/cases/compiler/noEmitHelpers.ts
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
// @noemithelpers: true
|
||||||
|
|
||||||
|
class A { }
|
||||||
|
class B extends A { }
|
11
tests/cases/compiler/noEmitHelpers2.ts
Normal file
11
tests/cases/compiler/noEmitHelpers2.ts
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
// @noemithelpers: true
|
||||||
|
// @emitdecoratormetadata: true
|
||||||
|
// @target: es5
|
||||||
|
|
||||||
|
function decorator() { }
|
||||||
|
|
||||||
|
@decorator
|
||||||
|
class A {
|
||||||
|
constructor(a: number, @decorator b: string) {
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue