From 17763ab04058d90b141e555b9cc695483d6c052a Mon Sep 17 00:00:00 2001 From: Stan Thomas Date: Thu, 29 Jan 2015 17:26:53 -0500 Subject: [PATCH 1/6] Supress const enum member value comment from emitted javascript in presence of --removeComments --- src/compiler/emitter.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 34978ed7fd6..0b6badb7b43 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -2463,7 +2463,7 @@ module ts { var constantValue = resolver.getConstantValue(node); if (constantValue !== undefined) { var propertyName = node.kind === SyntaxKind.PropertyAccessExpression ? declarationNameToString((node).name) : getTextOfNode((node).argumentExpression); - write(constantValue.toString() + " /* " + propertyName + " */"); + write(constantValue.toString() + (!compilerOptions.removeComments ? " /* " + propertyName + " */" : "")); return true; } return false; From 0b435f56ee5c9172a65b76b2e4a5afb6456293eb Mon Sep 17 00:00:00 2001 From: Stan Thomas Date: Thu, 29 Jan 2015 18:27:26 -0500 Subject: [PATCH 2/6] test case for TS generated comments const enum to show that they are supressed by removeComments flag --- tests/cases/compiler/commentsdoNotEmitComments.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/cases/compiler/commentsdoNotEmitComments.ts b/tests/cases/compiler/commentsdoNotEmitComments.ts index 0d971e79df7..f2475f8437e 100644 --- a/tests/cases/compiler/commentsdoNotEmitComments.ts +++ b/tests/cases/compiler/commentsdoNotEmitComments.ts @@ -88,3 +88,8 @@ module m1 { /// this is x declare var x; + + +/** const enum member value comment (generated by TS) */ +const enum color { red, green, blue } +var shade = color.green; From 95e7015fa05ae2bf8b41c62abbf619c06d8ffd10 Mon Sep 17 00:00:00 2001 From: Stan Thomas Date: Fri, 30 Jan 2015 06:09:31 -0500 Subject: [PATCH 3/6] Supress const enum member value comment from emitted javascript in presence of --removeComments (revised) --- src/compiler/emitter.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 0b6badb7b43..4405b895d59 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -2462,8 +2462,11 @@ module ts { function tryEmitConstantValue(node: PropertyAccessExpression | ElementAccessExpression): boolean { var constantValue = resolver.getConstantValue(node); if (constantValue !== undefined) { - var propertyName = node.kind === SyntaxKind.PropertyAccessExpression ? declarationNameToString((node).name) : getTextOfNode((node).argumentExpression); - write(constantValue.toString() + (!compilerOptions.removeComments ? " /* " + propertyName + " */" : "")); + write(constantValue.toString()); + if (!compilerOptions.removeComments) { + var propertyName: string = node.kind === SyntaxKind.PropertyAccessExpression ? declarationNameToString((node).name) : getTextOfNode((node).argumentExpression); + write(" /* " + propertyName + " */"); + } return true; } return false; From 732ebf2aeb59e25307986014a55e63281b1415f1 Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Fri, 30 Jan 2015 18:20:26 -0800 Subject: [PATCH 4/6] fix crash in getReturnTypeFromFunctionBody if function declaration is incomplete and does not have body --- src/compiler/checker.ts | 3 +++ .../fourslash/errorInIncompleteMethodInObjectLiteral.ts | 5 +++++ 2 files changed, 8 insertions(+) create mode 100644 tests/cases/fourslash/errorInIncompleteMethodInObjectLiteral.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index ed89032b781..00b637301c8 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -6525,6 +6525,9 @@ module ts { function getReturnTypeFromBody(func: FunctionLikeDeclaration, contextualMapper?: TypeMapper): Type { var contextualSignature = getContextualSignatureForFunctionLikeDeclaration(func); + if (!func.body) { + return unknownType; + } if (func.body.kind !== SyntaxKind.Block) { var type = checkExpressionCached(func.body, contextualMapper); } diff --git a/tests/cases/fourslash/errorInIncompleteMethodInObjectLiteral.ts b/tests/cases/fourslash/errorInIncompleteMethodInObjectLiteral.ts new file mode 100644 index 00000000000..bd498acec5f --- /dev/null +++ b/tests/cases/fourslash/errorInIncompleteMethodInObjectLiteral.ts @@ -0,0 +1,5 @@ +/// + +//// var x: { f(): string } = { f( } + +verify.numberOfErrorsInCurrentFile(1); \ No newline at end of file From 79e3bedb3619746f4d2766a75e00cb59379bf3c1 Mon Sep 17 00:00:00 2001 From: Stan Thomas Date: Mon, 2 Feb 2015 17:48:35 -0500 Subject: [PATCH 5/6] declare variable type inenum test --- tests/cases/compiler/commentsdoNotEmitComments.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/cases/compiler/commentsdoNotEmitComments.ts b/tests/cases/compiler/commentsdoNotEmitComments.ts index f2475f8437e..6895f67b6b0 100644 --- a/tests/cases/compiler/commentsdoNotEmitComments.ts +++ b/tests/cases/compiler/commentsdoNotEmitComments.ts @@ -92,4 +92,4 @@ declare var x; /** const enum member value comment (generated by TS) */ const enum color { red, green, blue } -var shade = color.green; +var shade: color = color.green; From c1087ae0a90322fe710a619c5ba9ec6fe5f7fd1c Mon Sep 17 00:00:00 2001 From: Stan Thomas Date: Mon, 2 Feb 2015 18:10:18 -0500 Subject: [PATCH 6/6] accept updated baseline reference following addition of test for const enum comment suppression --- .../reference/commentsdoNotEmitComments.js | 12 ++++++++++++ .../reference/commentsdoNotEmitComments.types | 15 +++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/tests/baselines/reference/commentsdoNotEmitComments.js b/tests/baselines/reference/commentsdoNotEmitComments.js index fa1cc4c4d12..301ab56e4c0 100644 --- a/tests/baselines/reference/commentsdoNotEmitComments.js +++ b/tests/baselines/reference/commentsdoNotEmitComments.js @@ -86,6 +86,11 @@ module m1 { /// this is x declare var x; + + +/** const enum member value comment (generated by TS) */ +const enum color { red, green, blue } +var shade: color = color.green; //// [commentsdoNotEmitComments.js] @@ -129,6 +134,7 @@ var m1; })(); m1.b = b; })(m1 || (m1 = {})); +var shade = 1; //// [commentsdoNotEmitComments.d.ts] @@ -161,3 +167,9 @@ declare module m1 { } } declare var x: any; +declare const enum color { + red = 0, + green = 1, + blue = 2, +} +declare var shade: color; diff --git a/tests/baselines/reference/commentsdoNotEmitComments.types b/tests/baselines/reference/commentsdoNotEmitComments.types index c42d3d2c17c..bbe3a685ca1 100644 --- a/tests/baselines/reference/commentsdoNotEmitComments.types +++ b/tests/baselines/reference/commentsdoNotEmitComments.types @@ -151,3 +151,18 @@ module m1 { declare var x; >x : any + +/** const enum member value comment (generated by TS) */ +const enum color { red, green, blue } +>color : color +>red : color +>green : color +>blue : color + +var shade: color = color.green; +>shade : color +>color : color +>color.green : color +>color : typeof color +>green : color +