diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 53dc1bf3445..3cf2e4815d2 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -6553,6 +6553,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/src/compiler/emitter.ts b/src/compiler/emitter.ts index c33f7fd5234..4e30f29dc5f 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -2461,8 +2461,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() + " /* " + 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; 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 + diff --git a/tests/cases/compiler/commentsdoNotEmitComments.ts b/tests/cases/compiler/commentsdoNotEmitComments.ts index 0d971e79df7..6895f67b6b0 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 = color.green; 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