diff --git a/src/compiler/transformers/ts.ts b/src/compiler/transformers/ts.ts index 4df58376b3cb1..07182b43b333b 100644 --- a/src/compiler/transformers/ts.ts +++ b/src/compiler/transformers/ts.ts @@ -1575,10 +1575,10 @@ namespace ts { * @param node The type node. */ function getRestParameterElementType(node: TypeNode) { - if (node.kind === SyntaxKind.ArrayType) { + if (node && node.kind === SyntaxKind.ArrayType) { return (node).elementType; } - else if (node.kind === SyntaxKind.TypeReference) { + else if (node && node.kind === SyntaxKind.TypeReference) { return singleOrUndefined((node).typeArguments); } else { @@ -1623,6 +1623,9 @@ namespace ts { if (isFunctionLike(node) && node.type) { return serializeTypeNode(node.type); } + else if (isAsyncFunctionLike(node)) { + return createIdentifier("Promise"); + } return createVoidZero(); } diff --git a/tests/baselines/reference/decoratorMetadataPromise.js b/tests/baselines/reference/decoratorMetadataPromise.js index 3ed8942033d60..56a66216dea4f 100644 --- a/tests/baselines/reference/decoratorMetadataPromise.js +++ b/tests/baselines/reference/decoratorMetadataPromise.js @@ -40,20 +40,20 @@ class A { baz(n) { return n; } } __decorate([ - decorator, - __metadata('design:type', Function), - __metadata('design:paramtypes', []), - __metadata('design:returntype', Promise) + decorator, + __metadata("design:type", Function), + __metadata("design:paramtypes", []), + __metadata("design:returntype", Promise) ], A.prototype, "foo", null); __decorate([ - decorator, - __metadata('design:type', Function), - __metadata('design:paramtypes', []), - __metadata('design:returntype', Promise) + decorator, + __metadata("design:type", Function), + __metadata("design:paramtypes", []), + __metadata("design:returntype", Promise) ], A.prototype, "bar", null); __decorate([ - decorator, - __metadata('design:type', Function), - __metadata('design:paramtypes', [Promise]), - __metadata('design:returntype', Promise) + decorator, + __metadata("design:type", Function), + __metadata("design:paramtypes", [Promise]), + __metadata("design:returntype", Promise) ], A.prototype, "baz", null); diff --git a/tests/baselines/reference/emitDecoratorMetadata_restArgs.js b/tests/baselines/reference/emitDecoratorMetadata_restArgs.js index 35350c54e0a21..c7caefe98cb58 100644 --- a/tests/baselines/reference/emitDecoratorMetadata_restArgs.js +++ b/tests/baselines/reference/emitDecoratorMetadata_restArgs.js @@ -41,18 +41,18 @@ var A = (function () { args[_i - 0] = arguments[_i]; } }; - __decorate([ - MyMethodDecorator, - __metadata('design:type', Function), - __metadata('design:paramtypes', [Object]), - __metadata('design:returntype', void 0) - ], A.prototype, "method", null); - A = __decorate([ - MyClassDecorator, - __metadata('design:paramtypes', [Object]) - ], A); return A; }()); +__decorate([ + MyMethodDecorator, + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", void 0) +], A.prototype, "method", null); +A = __decorate([ + MyClassDecorator, + __metadata("design:paramtypes", [Object]) +], A); var B = (function () { function B() { var args = []; @@ -66,15 +66,15 @@ var B = (function () { args[_i - 0] = arguments[_i]; } }; - __decorate([ - MyMethodDecorator, - __metadata('design:type', Function), - __metadata('design:paramtypes', [String]), - __metadata('design:returntype', void 0) - ], B.prototype, "method", null); - B = __decorate([ - MyClassDecorator, - __metadata('design:paramtypes', [Number]) - ], B); return B; }()); +__decorate([ + MyMethodDecorator, + __metadata("design:type", Function), + __metadata("design:paramtypes", [String]), + __metadata("design:returntype", void 0) +], B.prototype, "method", null); +B = __decorate([ + MyClassDecorator, + __metadata("design:paramtypes", [Number]) +], B); diff --git a/tests/baselines/reference/typeReferenceDirectives11.trace.json b/tests/baselines/reference/typeReferenceDirectives11.trace.json index 77f0980ffd646..9cd7e2c58503a 100644 --- a/tests/baselines/reference/typeReferenceDirectives11.trace.json +++ b/tests/baselines/reference/typeReferenceDirectives11.trace.json @@ -2,7 +2,6 @@ "======== Resolving module './mod1' from '/mod2.ts'. ========", "Module resolution kind is not specified, using 'Classic'.", "File '/mod1.ts' exist - use it as a name resolution result.", - "Resolving real path for '/mod1.ts', result '/mod1.ts'", "======== Module name './mod1' was successfully resolved to '/mod1.ts'. ========", "======== Resolving type reference directive 'lib', containing file '/__inferred type names__.ts', root directory '/types'. ========", "Resolving with primary search path '/types'", diff --git a/tests/baselines/reference/typeReferenceDirectives12.trace.json b/tests/baselines/reference/typeReferenceDirectives12.trace.json index 6794ce17deb3c..35826ac539489 100644 --- a/tests/baselines/reference/typeReferenceDirectives12.trace.json +++ b/tests/baselines/reference/typeReferenceDirectives12.trace.json @@ -2,12 +2,10 @@ "======== Resolving module './main' from '/mod2.ts'. ========", "Module resolution kind is not specified, using 'Classic'.", "File '/main.ts' exist - use it as a name resolution result.", - "Resolving real path for '/main.ts', result '/main.ts'", "======== Module name './main' was successfully resolved to '/main.ts'. ========", "======== Resolving module './mod1' from '/mod2.ts'. ========", "Module resolution kind is not specified, using 'Classic'.", "File '/mod1.ts' exist - use it as a name resolution result.", - "Resolving real path for '/mod1.ts', result '/mod1.ts'", "======== Module name './mod1' was successfully resolved to '/mod1.ts'. ========", "======== Resolving type reference directive 'lib', containing file '/mod1.ts', root directory '/types'. ========", "Resolving with primary search path '/types'", @@ -17,7 +15,6 @@ "======== Resolving module './main' from '/mod1.ts'. ========", "Module resolution kind is not specified, using 'Classic'.", "File '/main.ts' exist - use it as a name resolution result.", - "Resolving real path for '/main.ts', result '/main.ts'", "======== Module name './main' was successfully resolved to '/main.ts'. ========", "======== Resolving type reference directive 'lib', containing file '/__inferred type names__.ts', root directory '/types'. ========", "Resolving with primary search path '/types'",