Skip to content

Commit 1fd12bc

Browse files
committed
Fix Debug Failure crash when resolving overloaded decorators with explicit tuple rest parameters
1 parent 3472548 commit 1fd12bc

File tree

4 files changed

+38
-1
lines changed

4 files changed

+38
-1
lines changed

bug_repro_63094.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
"use strict";
2+
// @experimentalDecorators: true
3+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
4+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
5+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
6+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
7+
return c > 3 && r && Object.defineProperty(target, key, r), r;
8+
};
9+
class Greeter {
10+
greet1() {
11+
return "Hello, " + this.greeting;
12+
}
13+
}
14+
__decorate([
15+
deco
16+
], Greeter.prototype, "greet1", null);

bug_repro_63094.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// @experimentalDecorators: true
2+
3+
class Greeter {
4+
@deco
5+
greet1() {
6+
return "Hello, " + this.greeting;
7+
}
8+
}
9+
10+
declare function deco(...args: [any, any, any]): any;

src/compiler/checker.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36344,7 +36344,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
3634436344
case SyntaxKind.GetAccessor:
3634536345
case SyntaxKind.SetAccessor:
3634636346
// For decorators with only two parameters we supply only two arguments
36347-
return signature.parameters.length <= 2 ? 2 : 3;
36347+
return getParameterCount(signature) <= 2 ? 2 : 3;
3634836348
case SyntaxKind.Parameter:
3634936349
return 3;
3635036350
default:
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// @experimentalDecorators: true
2+
// @target: es5
3+
4+
declare function deco(...args: [any, any, any]): any;
5+
6+
class Greeter {
7+
@deco
8+
greet1() {
9+
return "Hello, " + this.greeting;
10+
}
11+
}

0 commit comments

Comments
 (0)