From 8dd9b9f2cb5afb13d68b05b65c2e54bb162ff246 Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Mon, 23 Mar 2015 14:47:07 -0700 Subject: [PATCH] Updated check and emit, updated baselines --- src/compiler/checker.ts | 6 +- src/compiler/emitter.ts | 1 - .../baselines/reference/APISample_compile.js | 2 - .../reference/APISample_compile.types | 12 -- tests/baselines/reference/APISample_linter.js | 2 - .../reference/APISample_linter.types | 12 -- .../reference/APISample_transform.js | 2 - .../reference/APISample_transform.types | 12 -- .../baselines/reference/APISample_watcher.js | 2 - .../reference/APISample_watcher.types | 12 -- .../reference/decoratorOnClass8.errors.txt | 4 +- .../decoratorOnClassMethod10.errors.txt | 4 +- .../reference/decoratorOnClassMethod4.js | 46 +++--- .../reference/decoratorOnClassMethod5.js | 46 +++--- .../reference/decoratorOnClassMethod6.js | 46 +++--- .../reference/decoratorOnClassMethod7.js | 46 +++--- .../decoratorOnClassProperty13.errors.txt | 10 +- .../es6ExportDefaultClassDeclaration2.js | 2 +- .../sourceMapValidationDecorators.js | 2 +- .../sourceMapValidationDecorators.js.map | 2 +- ...ourceMapValidationDecorators.sourcemap.txt | 138 +++++++++--------- 21 files changed, 175 insertions(+), 234 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 36aad331b08..b51a5640a02 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -102,11 +102,9 @@ module ts { let anyArrayType: Type; let globalTypedPropertyDescriptorType: ObjectType; let globalClassDecoratorType: ObjectType; - let globalClassDecoratorErasedType: ObjectType; let globalParameterDecoratorType: ObjectType; let globalPropertyDecoratorType: ObjectType; - let globalPropertyDecoratorErasedType: ObjectType; - + let tupleTypes: Map = {}; let unionTypes: Map = {}; let stringLiteralTypes: Map = {}; @@ -11344,9 +11342,7 @@ module ts { globalRegExpType = getGlobalType("RegExp"); globalTypedPropertyDescriptorType = getTypeOfGlobalSymbol(getGlobalTypeSymbol("TypedPropertyDescriptor"), 1); globalClassDecoratorType = getGlobalType("ClassDecorator"); - globalClassDecoratorErasedType = instantiateSingleCallFunctionType(globalClassDecoratorType, [globalFunctionType]); globalPropertyDecoratorType = getGlobalType("PropertyDecorator"); - globalPropertyDecoratorErasedType = instantiateSingleCallFunctionType(globalPropertyDecoratorType, [anyType]); globalParameterDecoratorType = getGlobalType("ParameterDecorator"); // If we're in ES6 mode, load the TemplateStringsArray. diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 12863c0d2b4..31ca3f7e5fc 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -6053,7 +6053,6 @@ module ts { var __decorate = this.__decorate || function (decorators, target, key) { var kind = key == null ? 0 : typeof key == "number" ? 1 : 2, result = target; if (kind == 2) result = Object.getOwnPropertyDescriptor(target, typeof key == "symbol" ? key : key = String(key)); - if (kind == 2 && !result) kind = 1; for (var i = decorators.length - 1; i >= 0; --i) { var decorator = decorators[i]; result = (kind == 0 ? decorator(result) : kind == 1 ? decorator(target, key) : decorator(target, key, result)) || result; diff --git a/tests/baselines/reference/APISample_compile.js b/tests/baselines/reference/APISample_compile.js index 7a8aa117135..43d9c656742 100644 --- a/tests/baselines/reference/APISample_compile.js +++ b/tests/baselines/reference/APISample_compile.js @@ -960,7 +960,6 @@ declare module "typescript" { getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): number; isUnknownIdentifier(location: Node, name: string): boolean; getBlockScopedVariableId(node: Identifier): number; - getClassDeclarationVariableId(node: Identifier): number; } const enum SymbolFlags { FunctionScopedVariable = 1, @@ -1455,7 +1454,6 @@ declare module "typescript" { character: number; }; function getLineAndCharacterOfPosition(sourceFile: SourceFile, position: number): LineAndCharacter; - function lineBreakBetween(sourceFile: SourceFile, firstPos: number, secondPos: number): boolean; function isWhiteSpace(ch: number): boolean; function isLineBreak(ch: number): boolean; function isOctalDigit(ch: number): boolean; diff --git a/tests/baselines/reference/APISample_compile.types b/tests/baselines/reference/APISample_compile.types index 3a1def11898..cb4bffb9186 100644 --- a/tests/baselines/reference/APISample_compile.types +++ b/tests/baselines/reference/APISample_compile.types @@ -3121,11 +3121,6 @@ declare module "typescript" { getBlockScopedVariableId(node: Identifier): number; >getBlockScopedVariableId : (node: Identifier) => number >node : Identifier ->Identifier : Identifier - - getClassDeclarationVariableId(node: Identifier): number; ->getClassDeclarationVariableId : (node: Identifier) => number ->node : Identifier >Identifier : Identifier } const enum SymbolFlags { @@ -4614,13 +4609,6 @@ declare module "typescript" { >position : number >LineAndCharacter : LineAndCharacter - function lineBreakBetween(sourceFile: SourceFile, firstPos: number, secondPos: number): boolean; ->lineBreakBetween : (sourceFile: SourceFile, firstPos: number, secondPos: number) => boolean ->sourceFile : SourceFile ->SourceFile : SourceFile ->firstPos : number ->secondPos : number - function isWhiteSpace(ch: number): boolean; >isWhiteSpace : (ch: number) => boolean >ch : number diff --git a/tests/baselines/reference/APISample_linter.js b/tests/baselines/reference/APISample_linter.js index e9616e5d744..05846c12544 100644 --- a/tests/baselines/reference/APISample_linter.js +++ b/tests/baselines/reference/APISample_linter.js @@ -991,7 +991,6 @@ declare module "typescript" { getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): number; isUnknownIdentifier(location: Node, name: string): boolean; getBlockScopedVariableId(node: Identifier): number; - getClassDeclarationVariableId(node: Identifier): number; } const enum SymbolFlags { FunctionScopedVariable = 1, @@ -1486,7 +1485,6 @@ declare module "typescript" { character: number; }; function getLineAndCharacterOfPosition(sourceFile: SourceFile, position: number): LineAndCharacter; - function lineBreakBetween(sourceFile: SourceFile, firstPos: number, secondPos: number): boolean; function isWhiteSpace(ch: number): boolean; function isLineBreak(ch: number): boolean; function isOctalDigit(ch: number): boolean; diff --git a/tests/baselines/reference/APISample_linter.types b/tests/baselines/reference/APISample_linter.types index bbae995432a..7590b110b69 100644 --- a/tests/baselines/reference/APISample_linter.types +++ b/tests/baselines/reference/APISample_linter.types @@ -3267,11 +3267,6 @@ declare module "typescript" { getBlockScopedVariableId(node: Identifier): number; >getBlockScopedVariableId : (node: Identifier) => number >node : Identifier ->Identifier : Identifier - - getClassDeclarationVariableId(node: Identifier): number; ->getClassDeclarationVariableId : (node: Identifier) => number ->node : Identifier >Identifier : Identifier } const enum SymbolFlags { @@ -4760,13 +4755,6 @@ declare module "typescript" { >position : number >LineAndCharacter : LineAndCharacter - function lineBreakBetween(sourceFile: SourceFile, firstPos: number, secondPos: number): boolean; ->lineBreakBetween : (sourceFile: SourceFile, firstPos: number, secondPos: number) => boolean ->sourceFile : SourceFile ->SourceFile : SourceFile ->firstPos : number ->secondPos : number - function isWhiteSpace(ch: number): boolean; >isWhiteSpace : (ch: number) => boolean >ch : number diff --git a/tests/baselines/reference/APISample_transform.js b/tests/baselines/reference/APISample_transform.js index 288bf70e864..d0861f0ecfe 100644 --- a/tests/baselines/reference/APISample_transform.js +++ b/tests/baselines/reference/APISample_transform.js @@ -992,7 +992,6 @@ declare module "typescript" { getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): number; isUnknownIdentifier(location: Node, name: string): boolean; getBlockScopedVariableId(node: Identifier): number; - getClassDeclarationVariableId(node: Identifier): number; } const enum SymbolFlags { FunctionScopedVariable = 1, @@ -1487,7 +1486,6 @@ declare module "typescript" { character: number; }; function getLineAndCharacterOfPosition(sourceFile: SourceFile, position: number): LineAndCharacter; - function lineBreakBetween(sourceFile: SourceFile, firstPos: number, secondPos: number): boolean; function isWhiteSpace(ch: number): boolean; function isLineBreak(ch: number): boolean; function isOctalDigit(ch: number): boolean; diff --git a/tests/baselines/reference/APISample_transform.types b/tests/baselines/reference/APISample_transform.types index 90cc951f005..4231a1cbab2 100644 --- a/tests/baselines/reference/APISample_transform.types +++ b/tests/baselines/reference/APISample_transform.types @@ -3217,11 +3217,6 @@ declare module "typescript" { getBlockScopedVariableId(node: Identifier): number; >getBlockScopedVariableId : (node: Identifier) => number >node : Identifier ->Identifier : Identifier - - getClassDeclarationVariableId(node: Identifier): number; ->getClassDeclarationVariableId : (node: Identifier) => number ->node : Identifier >Identifier : Identifier } const enum SymbolFlags { @@ -4710,13 +4705,6 @@ declare module "typescript" { >position : number >LineAndCharacter : LineAndCharacter - function lineBreakBetween(sourceFile: SourceFile, firstPos: number, secondPos: number): boolean; ->lineBreakBetween : (sourceFile: SourceFile, firstPos: number, secondPos: number) => boolean ->sourceFile : SourceFile ->SourceFile : SourceFile ->firstPos : number ->secondPos : number - function isWhiteSpace(ch: number): boolean; >isWhiteSpace : (ch: number) => boolean >ch : number diff --git a/tests/baselines/reference/APISample_watcher.js b/tests/baselines/reference/APISample_watcher.js index a35850a7ce2..3bfe0b448b7 100644 --- a/tests/baselines/reference/APISample_watcher.js +++ b/tests/baselines/reference/APISample_watcher.js @@ -1029,7 +1029,6 @@ declare module "typescript" { getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): number; isUnknownIdentifier(location: Node, name: string): boolean; getBlockScopedVariableId(node: Identifier): number; - getClassDeclarationVariableId(node: Identifier): number; } const enum SymbolFlags { FunctionScopedVariable = 1, @@ -1524,7 +1523,6 @@ declare module "typescript" { character: number; }; function getLineAndCharacterOfPosition(sourceFile: SourceFile, position: number): LineAndCharacter; - function lineBreakBetween(sourceFile: SourceFile, firstPos: number, secondPos: number): boolean; function isWhiteSpace(ch: number): boolean; function isLineBreak(ch: number): boolean; function isOctalDigit(ch: number): boolean; diff --git a/tests/baselines/reference/APISample_watcher.types b/tests/baselines/reference/APISample_watcher.types index edaccc1daba..6f27edabcbf 100644 --- a/tests/baselines/reference/APISample_watcher.types +++ b/tests/baselines/reference/APISample_watcher.types @@ -3390,11 +3390,6 @@ declare module "typescript" { getBlockScopedVariableId(node: Identifier): number; >getBlockScopedVariableId : (node: Identifier) => number >node : Identifier ->Identifier : Identifier - - getClassDeclarationVariableId(node: Identifier): number; ->getClassDeclarationVariableId : (node: Identifier) => number ->node : Identifier >Identifier : Identifier } const enum SymbolFlags { @@ -4883,13 +4878,6 @@ declare module "typescript" { >position : number >LineAndCharacter : LineAndCharacter - function lineBreakBetween(sourceFile: SourceFile, firstPos: number, secondPos: number): boolean; ->lineBreakBetween : (sourceFile: SourceFile, firstPos: number, secondPos: number) => boolean ->sourceFile : SourceFile ->SourceFile : SourceFile ->firstPos : number ->secondPos : number - function isWhiteSpace(ch: number): boolean; >isWhiteSpace : (ch: number) => boolean >ch : number diff --git a/tests/baselines/reference/decoratorOnClass8.errors.txt b/tests/baselines/reference/decoratorOnClass8.errors.txt index 3f3cf08e217..0a9fbf2956c 100644 --- a/tests/baselines/reference/decoratorOnClass8.errors.txt +++ b/tests/baselines/reference/decoratorOnClass8.errors.txt @@ -1,4 +1,4 @@ -tests/cases/conformance/decorators/class/decoratorOnClass8.ts(3,1): error TS2322: Type '(target: Function, paramIndex: number) => void' is not assignable to type '(target: Function) => void | Function'. +tests/cases/conformance/decorators/class/decoratorOnClass8.ts(3,1): error TS2322: Type '(target: Function, paramIndex: number) => void' is not assignable to type '(target: typeof C) => void | typeof C'. ==== tests/cases/conformance/decorators/class/decoratorOnClass8.ts (1 errors) ==== @@ -6,6 +6,6 @@ tests/cases/conformance/decorators/class/decoratorOnClass8.ts(3,1): error TS2322 @dec() ~~~~~~ -!!! error TS2322: Type '(target: Function, paramIndex: number) => void' is not assignable to type '(target: Function) => void | Function'. +!!! error TS2322: Type '(target: Function, paramIndex: number) => void' is not assignable to type '(target: typeof C) => void | typeof C'. class C { } \ No newline at end of file diff --git a/tests/baselines/reference/decoratorOnClassMethod10.errors.txt b/tests/baselines/reference/decoratorOnClassMethod10.errors.txt index 5b07832a407..cd331473b7c 100644 --- a/tests/baselines/reference/decoratorOnClassMethod10.errors.txt +++ b/tests/baselines/reference/decoratorOnClassMethod10.errors.txt @@ -1,4 +1,4 @@ -tests/cases/conformance/decorators/class/method/decoratorOnClassMethod10.ts(4,5): error TS2322: Type '(target: Function, paramIndex: number) => void' is not assignable to type '(target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor) => void | TypedPropertyDescriptor'. +tests/cases/conformance/decorators/class/method/decoratorOnClassMethod10.ts(4,5): error TS2322: Type '(target: Function, paramIndex: number) => void' is not assignable to type '(target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<() => void>) => void | TypedPropertyDescriptor<() => void>'. Types of parameters 'paramIndex' and 'propertyKey' are incompatible. Type 'number' is not assignable to type 'string | symbol'. Type 'number' is not assignable to type 'symbol'. @@ -10,7 +10,7 @@ tests/cases/conformance/decorators/class/method/decoratorOnClassMethod10.ts(4,5) class C { @dec method() {} ~~~~ -!!! error TS2322: Type '(target: Function, paramIndex: number) => void' is not assignable to type '(target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor) => void | TypedPropertyDescriptor'. +!!! error TS2322: Type '(target: Function, paramIndex: number) => void' is not assignable to type '(target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<() => void>) => void | TypedPropertyDescriptor<() => void>'. !!! error TS2322: Types of parameters 'paramIndex' and 'propertyKey' are incompatible. !!! error TS2322: Type 'number' is not assignable to type 'string | symbol'. !!! error TS2322: Type 'number' is not assignable to type 'symbol'. diff --git a/tests/baselines/reference/decoratorOnClassMethod4.js b/tests/baselines/reference/decoratorOnClassMethod4.js index f886aac28eb..048a7d73e3d 100644 --- a/tests/baselines/reference/decoratorOnClassMethod4.js +++ b/tests/baselines/reference/decoratorOnClassMethod4.js @@ -1,27 +1,27 @@ -//// [decoratorOnClassMethod4.ts] +//// [decoratorOnClassMethod4.ts] declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; class C { @dec ["method"]() {} -} - -//// [decoratorOnClassMethod4.js] -var __decorate = this.__decorate || function (decorators, target, key) { - var kind = key == null ? 0 : typeof key == "number" ? 1 : 2, result = target; - if (kind == 2) result = Object.getOwnPropertyDescriptor(target, typeof key == "symbol" ? key : key = String(key)); - for (var i = decorators.length - 1; i >= 0; --i) { - var decorator = decorators[i]; - result = (kind == 0 ? decorator(result) : kind == 1 ? decorator(target, key) : decorator(target, key, result)) || result; - } - if (kind == 2 && result) Object.defineProperty(target, key, result); - if (kind == 0) return result; -}; -var C = (function() { - class C { - [_a = "method"]() { - } - } - __decorate([dec], C.prototype, _a); - return C; - var _a; -})(); +} + +//// [decoratorOnClassMethod4.js] +var __decorate = this.__decorate || function (decorators, target, key) { + var kind = key == null ? 0 : typeof key == "number" ? 1 : 2, result = target; + if (kind == 2) result = Object.getOwnPropertyDescriptor(target, typeof key == "symbol" ? key : key = String(key)); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + result = (kind == 0 ? decorator(result) : kind == 1 ? decorator(target, key) : decorator(target, key, result)) || result; + } + if (kind == 2 && result) Object.defineProperty(target, key, result); + if (kind == 0) return result; +}; +let C = () => { + class C { + [_a = "method"]() { + } + } + __decorate([dec], C.prototype, _a); + return C; + var _a; +}(); diff --git a/tests/baselines/reference/decoratorOnClassMethod5.js b/tests/baselines/reference/decoratorOnClassMethod5.js index 44a37120d5c..87f7a0043ae 100644 --- a/tests/baselines/reference/decoratorOnClassMethod5.js +++ b/tests/baselines/reference/decoratorOnClassMethod5.js @@ -1,27 +1,27 @@ -//// [decoratorOnClassMethod5.ts] +//// [decoratorOnClassMethod5.ts] declare function dec(): (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor; class C { @dec() ["method"]() {} -} - -//// [decoratorOnClassMethod5.js] -var __decorate = this.__decorate || function (decorators, target, key) { - var kind = key == null ? 0 : typeof key == "number" ? 1 : 2, result = target; - if (kind == 2) result = Object.getOwnPropertyDescriptor(target, typeof key == "symbol" ? key : key = String(key)); - for (var i = decorators.length - 1; i >= 0; --i) { - var decorator = decorators[i]; - result = (kind == 0 ? decorator(result) : kind == 1 ? decorator(target, key) : decorator(target, key, result)) || result; - } - if (kind == 2 && result) Object.defineProperty(target, key, result); - if (kind == 0) return result; -}; -var C = (function() { - class C { - [_a = "method"]() { - } - } - __decorate([dec()], C.prototype, _a); - return C; - var _a; -})(); +} + +//// [decoratorOnClassMethod5.js] +var __decorate = this.__decorate || function (decorators, target, key) { + var kind = key == null ? 0 : typeof key == "number" ? 1 : 2, result = target; + if (kind == 2) result = Object.getOwnPropertyDescriptor(target, typeof key == "symbol" ? key : key = String(key)); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + result = (kind == 0 ? decorator(result) : kind == 1 ? decorator(target, key) : decorator(target, key, result)) || result; + } + if (kind == 2 && result) Object.defineProperty(target, key, result); + if (kind == 0) return result; +}; +let C = () => { + class C { + [_a = "method"]() { + } + } + __decorate([dec()], C.prototype, _a); + return C; + var _a; +}(); diff --git a/tests/baselines/reference/decoratorOnClassMethod6.js b/tests/baselines/reference/decoratorOnClassMethod6.js index 52c57519015..faf2933a2c1 100644 --- a/tests/baselines/reference/decoratorOnClassMethod6.js +++ b/tests/baselines/reference/decoratorOnClassMethod6.js @@ -1,27 +1,27 @@ -//// [decoratorOnClassMethod6.ts] +//// [decoratorOnClassMethod6.ts] declare function dec(): (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor; class C { @dec ["method"]() {} -} - -//// [decoratorOnClassMethod6.js] -var __decorate = this.__decorate || function (decorators, target, key) { - var kind = key == null ? 0 : typeof key == "number" ? 1 : 2, result = target; - if (kind == 2) result = Object.getOwnPropertyDescriptor(target, typeof key == "symbol" ? key : key = String(key)); - for (var i = decorators.length - 1; i >= 0; --i) { - var decorator = decorators[i]; - result = (kind == 0 ? decorator(result) : kind == 1 ? decorator(target, key) : decorator(target, key, result)) || result; - } - if (kind == 2 && result) Object.defineProperty(target, key, result); - if (kind == 0) return result; -}; -var C = (function() { - class C { - [_a = "method"]() { - } - } - __decorate([dec], C.prototype, _a); - return C; - var _a; -})(); +} + +//// [decoratorOnClassMethod6.js] +var __decorate = this.__decorate || function (decorators, target, key) { + var kind = key == null ? 0 : typeof key == "number" ? 1 : 2, result = target; + if (kind == 2) result = Object.getOwnPropertyDescriptor(target, typeof key == "symbol" ? key : key = String(key)); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + result = (kind == 0 ? decorator(result) : kind == 1 ? decorator(target, key) : decorator(target, key, result)) || result; + } + if (kind == 2 && result) Object.defineProperty(target, key, result); + if (kind == 0) return result; +}; +let C = () => { + class C { + [_a = "method"]() { + } + } + __decorate([dec], C.prototype, _a); + return C; + var _a; +}(); diff --git a/tests/baselines/reference/decoratorOnClassMethod7.js b/tests/baselines/reference/decoratorOnClassMethod7.js index f64859e40c5..f0df2554c1e 100644 --- a/tests/baselines/reference/decoratorOnClassMethod7.js +++ b/tests/baselines/reference/decoratorOnClassMethod7.js @@ -1,27 +1,27 @@ -//// [decoratorOnClassMethod7.ts] +//// [decoratorOnClassMethod7.ts] declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; class C { @dec public ["method"]() {} -} - -//// [decoratorOnClassMethod7.js] -var __decorate = this.__decorate || function (decorators, target, key) { - var kind = key == null ? 0 : typeof key == "number" ? 1 : 2, result = target; - if (kind == 2) result = Object.getOwnPropertyDescriptor(target, typeof key == "symbol" ? key : key = String(key)); - for (var i = decorators.length - 1; i >= 0; --i) { - var decorator = decorators[i]; - result = (kind == 0 ? decorator(result) : kind == 1 ? decorator(target, key) : decorator(target, key, result)) || result; - } - if (kind == 2 && result) Object.defineProperty(target, key, result); - if (kind == 0) return result; -}; -var C = (function() { - class C { - [_a = "method"]() { - } - } - __decorate([dec], C.prototype, _a); - return C; - var _a; -})(); +} + +//// [decoratorOnClassMethod7.js] +var __decorate = this.__decorate || function (decorators, target, key) { + var kind = key == null ? 0 : typeof key == "number" ? 1 : 2, result = target; + if (kind == 2) result = Object.getOwnPropertyDescriptor(target, typeof key == "symbol" ? key : key = String(key)); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + result = (kind == 0 ? decorator(result) : kind == 1 ? decorator(target, key) : decorator(target, key, result)) || result; + } + if (kind == 2 && result) Object.defineProperty(target, key, result); + if (kind == 0) return result; +}; +let C = () => { + class C { + [_a = "method"]() { + } + } + __decorate([dec], C.prototype, _a); + return C; + var _a; +}(); diff --git a/tests/baselines/reference/decoratorOnClassProperty13.errors.txt b/tests/baselines/reference/decoratorOnClassProperty13.errors.txt index 27164bf3f48..72af8381000 100644 --- a/tests/baselines/reference/decoratorOnClassProperty13.errors.txt +++ b/tests/baselines/reference/decoratorOnClassProperty13.errors.txt @@ -1,4 +1,4 @@ -tests/cases/conformance/decorators/class/property/decoratorOnClassProperty13.ts(4,5): error TS1208: A decorator may not change the type of a member. +tests/cases/conformance/decorators/class/property/decoratorOnClassProperty13.ts(4,5): error TS2322: Type '(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor' is not assignable to type '(target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor) => void | TypedPropertyDescriptor'. Type 'TypedPropertyDescriptor' is not assignable to type 'void | TypedPropertyDescriptor'. Type 'TypedPropertyDescriptor' is not assignable to type 'TypedPropertyDescriptor'. Type 'number' is not assignable to type 'string'. @@ -10,8 +10,8 @@ tests/cases/conformance/decorators/class/property/decoratorOnClassProperty13.ts( class C { @dec prop: string; ~~~~ -!!! error TS1208: A decorator may not change the type of a member. -!!! error TS1208: Type 'TypedPropertyDescriptor' is not assignable to type 'void | TypedPropertyDescriptor'. -!!! error TS1208: Type 'TypedPropertyDescriptor' is not assignable to type 'TypedPropertyDescriptor'. -!!! error TS1208: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Type '(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor' is not assignable to type '(target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor) => void | TypedPropertyDescriptor'. +!!! error TS2322: Type 'TypedPropertyDescriptor' is not assignable to type 'void | TypedPropertyDescriptor'. +!!! error TS2322: Type 'TypedPropertyDescriptor' is not assignable to type 'TypedPropertyDescriptor'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. } \ No newline at end of file diff --git a/tests/baselines/reference/es6ExportDefaultClassDeclaration2.js b/tests/baselines/reference/es6ExportDefaultClassDeclaration2.js index a975d4322f5..8eb16713acf 100644 --- a/tests/baselines/reference/es6ExportDefaultClassDeclaration2.js +++ b/tests/baselines/reference/es6ExportDefaultClassDeclaration2.js @@ -6,7 +6,7 @@ export default class { //// [es6ExportDefaultClassDeclaration2.js] -export default class { +export default class { method() { } } diff --git a/tests/baselines/reference/sourceMapValidationDecorators.js b/tests/baselines/reference/sourceMapValidationDecorators.js index caabfc8dd49..677106f1feb 100644 --- a/tests/baselines/reference/sourceMapValidationDecorators.js +++ b/tests/baselines/reference/sourceMapValidationDecorators.js @@ -94,10 +94,10 @@ var Greeter = (function () { Greeter.x1 = 10; __decorate([PropertyDecorator1, PropertyDecorator2(40)], Greeter.prototype, "greet"); __decorate([PropertyDecorator1, PropertyDecorator2(50)], Greeter.prototype, "x"); - __decorate([PropertyDecorator1, PropertyDecorator2(60)], Greeter, "x1"); __decorate([ParameterDecorator1, ParameterDecorator2(70)], Greeter.prototype.fn, 0); __decorate([ParameterDecorator1, ParameterDecorator2(90)], _set_greetings, 0); __decorate([PropertyDecorator1, PropertyDecorator2(80), PropertyDecorator1, PropertyDecorator2(90)], Greeter.prototype, "greetings"); + __decorate([PropertyDecorator1, PropertyDecorator2(60)], Greeter, "x1"); __decorate([ParameterDecorator1, ParameterDecorator2(20)], Greeter, 0); __decorate([ParameterDecorator1, ParameterDecorator2(30)], Greeter, 1); Greeter = __decorate([ClassDecorator1, ClassDecorator2(10)], Greeter); diff --git a/tests/baselines/reference/sourceMapValidationDecorators.js.map b/tests/baselines/reference/sourceMapValidationDecorators.js.map index 920b9bcefb6..edcf9bae071 100644 --- a/tests/baselines/reference/sourceMapValidationDecorators.js.map +++ b/tests/baselines/reference/sourceMapValidationDecorators.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDecorators.js.map] -{"version":3,"file":"sourceMapValidationDecorators.js","sourceRoot":"","sources":["sourceMapValidationDecorators.ts"],"names":["Greeter","Greeter.constructor","Greeter.greet","Greeter.fn","Greeter.greetings"],"mappings":";;;;;;;;;;AAOA;IAGIA,iBAGSA,QAAgBA;QAEvBC,WAEcA;aAFdA,WAEcA,CAFdA,sBAEcA,CAFdA,IAEcA;YAFdA,0BAEcA;;QAJPA,aAAQA,GAARA,QAAQA,CAAQA;IAKzBA,CAACA;IAIDD,uBAAKA,GAFLA;QAGIE,MAAMA,CAACA,MAAMA,GAAGA,IAAIA,CAACA,QAAQA,GAAGA,OAAOA,CAACA;IAC5CA,CAACA;IAUOF,oBAAEA,GAAVA,UAGEA,CAASA;QACPG,MAAMA,CAACA,IAAIA,CAACA,QAAQA,CAACA;IACzBA,CAACA;IAEDH,sBAEIA,8BAASA;aAFbA;YAGII,MAAMA,CAACA,IAAIA,CAACA,QAAQA,CAACA;QACzBA,CAACA;aAEDJ,2BAKEA,SAAiBA;YACfI,IAAIA,CAACA,QAAQA,GAAGA,SAASA,CAACA;QAC9BA,CAACA;;;OATAJ;IAbcA,UAAEA,GAAWA,EAAEA,CAACA;IAZ/BA,YAACA,kBAAkBA,EAClBA,kBAAkBA,CAACA,EAAEA,CAACA,+BAGtBA;IAEDA,YAACA,kBAAkBA,EAClBA,kBAAkBA,CAACA,EAAEA,CAACA,2BACLA;IAElBA,YAACA,kBAAkBA,EAClBA,kBAAkBA,CAACA,EAAEA,CAACA,kBACQA;IAE/BA,YACGA,mBAAmBA,EACnBA,mBAAmBA,CAACA,EAAEA,CAACA,4BAGzBA;IAQDA,YAGGA,mBAAmBA,EACnBA,mBAAmBA,CAACA,EAAEA,CAACA,sBAGzBA;IAbDA,YAACA,kBAAkBA,EAClBA,kBAAkBA,CAACA,EAAEA,CAACA,EAKtBA,kBAAkBA,EAClBA,kBAAkBA,CAACA,EAAEA,CAACA,mCAHtBA;IAnCDA,YACGA,mBAAmBA,EACnBA,mBAAmBA,CAACA,EAAEA,CAACA,eAMzBA;IARDA,YAKGA,mBAAmBA,EACnBA,mBAAmBA,CAACA,EAAEA,CAACA,eAEzBA;IAXLA,sBAACA,eAAeA,EACfA,eAAeA,CAACA,EAAEA,CAACA,YA+CnBA;IAADA,cAACA;;AAADA,CAACA,AAhDD,IAgDC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDecorators.js","sourceRoot":"","sources":["sourceMapValidationDecorators.ts"],"names":["Greeter","Greeter.constructor","Greeter.greet","Greeter.fn","Greeter.greetings"],"mappings":";;;;;;;;;;AAOA;IAGIA,iBAGSA,QAAgBA;QAEvBC,WAEcA;aAFdA,WAEcA,CAFdA,sBAEcA,CAFdA,IAEcA;YAFdA,0BAEcA;;QAJPA,aAAQA,GAARA,QAAQA,CAAQA;IAKzBA,CAACA;IAIDD,uBAAKA,GAFLA;QAGIE,MAAMA,CAACA,MAAMA,GAAGA,IAAIA,CAACA,QAAQA,GAAGA,OAAOA,CAACA;IAC5CA,CAACA;IAUOF,oBAAEA,GAAVA,UAGEA,CAASA;QACPG,MAAMA,CAACA,IAAIA,CAACA,QAAQA,CAACA;IACzBA,CAACA;IAEDH,sBAEIA,8BAASA;aAFbA;YAGII,MAAMA,CAACA,IAAIA,CAACA,QAAQA,CAACA;QACzBA,CAACA;aAEDJ,2BAKEA,SAAiBA;YACfI,IAAIA,CAACA,QAAQA,GAAGA,SAASA,CAACA;QAC9BA,CAACA;;;OATAJ;IAbcA,UAAEA,GAAWA,EAAEA,CAACA;IAZ/BA,YAACA,kBAAkBA,EAClBA,kBAAkBA,CAACA,EAAEA,CAACA,+BAGtBA;IAEDA,YAACA,kBAAkBA,EAClBA,kBAAkBA,CAACA,EAAEA,CAACA,2BACLA;IAMlBA,YACGA,mBAAmBA,EACnBA,mBAAmBA,CAACA,EAAEA,CAACA,4BAGzBA;IAQDA,YAGGA,mBAAmBA,EACnBA,mBAAmBA,CAACA,EAAEA,CAACA,sBAGzBA;IAbDA,YAACA,kBAAkBA,EAClBA,kBAAkBA,CAACA,EAAEA,CAACA,EAKtBA,kBAAkBA,EAClBA,kBAAkBA,CAACA,EAAEA,CAACA,mCAHtBA;IAfDA,YAACA,kBAAkBA,EAClBA,kBAAkBA,CAACA,EAAEA,CAACA,kBACQA;IAtB/BA,YACGA,mBAAmBA,EACnBA,mBAAmBA,CAACA,EAAEA,CAACA,eAMzBA;IARDA,YAKGA,mBAAmBA,EACnBA,mBAAmBA,CAACA,EAAEA,CAACA,eAEzBA;IAXLA,sBAACA,eAAeA,EACfA,eAAeA,CAACA,EAAEA,CAACA,YA+CnBA;IAADA,cAACA;;AAADA,CAACA,AAhDD,IAgDC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDecorators.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDecorators.sourcemap.txt index d68ae997301..36939a34d97 100644 --- a/tests/baselines/reference/sourceMapValidationDecorators.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDecorators.sourcemap.txt @@ -435,6 +435,7 @@ sourceFile:sourceMapValidationDecorators.ts 7 > ^^ 8 > ^ 9 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^^^-> 1 > > > @@ -458,40 +459,6 @@ sourceFile:sourceMapValidationDecorators.ts 8 >Emitted(37, 59) Source(28, 28) + SourceIndex(0) name (Greeter) 9 >Emitted(37, 86) Source(29, 23) + SourceIndex(0) name (Greeter) --- ->>> __decorate([PropertyDecorator1, PropertyDecorator2(60)], Greeter, "x1"); -1 >^^^^ -2 > ^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^^ -6 > ^ -7 > ^^ -8 > ^ -9 > ^^^^^^^^^^^^^^^^^^ -10> ^^^^^^^^^^^^^-> -1 > - > - > -2 > @ -3 > PropertyDecorator1 -4 > - > @ -5 > PropertyDecorator2 -6 > ( -7 > 60 -8 > ) -9 > - > private static x1: number = 10; -1 >Emitted(38, 5) Source(31, 5) + SourceIndex(0) name (Greeter) -2 >Emitted(38, 17) Source(31, 6) + SourceIndex(0) name (Greeter) -3 >Emitted(38, 35) Source(31, 24) + SourceIndex(0) name (Greeter) -4 >Emitted(38, 37) Source(32, 6) + SourceIndex(0) name (Greeter) -5 >Emitted(38, 55) Source(32, 24) + SourceIndex(0) name (Greeter) -6 >Emitted(38, 56) Source(32, 25) + SourceIndex(0) name (Greeter) -7 >Emitted(38, 58) Source(32, 27) + SourceIndex(0) name (Greeter) -8 >Emitted(38, 59) Source(32, 28) + SourceIndex(0) name (Greeter) -9 >Emitted(38, 77) Source(33, 36) + SourceIndex(0) name (Greeter) ---- >>> __decorate([ParameterDecorator1, ParameterDecorator2(70)], Greeter.prototype.fn, 0); 1->^^^^ 2 > ^^^^^^^^^^^^ @@ -503,6 +470,10 @@ sourceFile:sourceMapValidationDecorators.ts 8 > ^ 9 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> + > + > @PropertyDecorator1 + > @PropertyDecorator2(60) + > private static x1: number = 10; > > 2 > private fn( @@ -518,15 +489,15 @@ sourceFile:sourceMapValidationDecorators.ts > x: number) { > return this.greeting; > } -1->Emitted(39, 5) Source(35, 5) + SourceIndex(0) name (Greeter) -2 >Emitted(39, 17) Source(36, 8) + SourceIndex(0) name (Greeter) -3 >Emitted(39, 36) Source(36, 27) + SourceIndex(0) name (Greeter) -4 >Emitted(39, 38) Source(37, 8) + SourceIndex(0) name (Greeter) -5 >Emitted(39, 57) Source(37, 27) + SourceIndex(0) name (Greeter) -6 >Emitted(39, 58) Source(37, 28) + SourceIndex(0) name (Greeter) -7 >Emitted(39, 60) Source(37, 30) + SourceIndex(0) name (Greeter) -8 >Emitted(39, 61) Source(37, 31) + SourceIndex(0) name (Greeter) -9 >Emitted(39, 89) Source(40, 6) + SourceIndex(0) name (Greeter) +1->Emitted(38, 5) Source(35, 5) + SourceIndex(0) name (Greeter) +2 >Emitted(38, 17) Source(36, 8) + SourceIndex(0) name (Greeter) +3 >Emitted(38, 36) Source(36, 27) + SourceIndex(0) name (Greeter) +4 >Emitted(38, 38) Source(37, 8) + SourceIndex(0) name (Greeter) +5 >Emitted(38, 57) Source(37, 27) + SourceIndex(0) name (Greeter) +6 >Emitted(38, 58) Source(37, 28) + SourceIndex(0) name (Greeter) +7 >Emitted(38, 60) Source(37, 30) + SourceIndex(0) name (Greeter) +8 >Emitted(38, 61) Source(37, 31) + SourceIndex(0) name (Greeter) +9 >Emitted(38, 89) Source(40, 6) + SourceIndex(0) name (Greeter) --- >>> __decorate([ParameterDecorator1, ParameterDecorator2(90)], _set_greetings, 0); 1 >^^^^ @@ -563,15 +534,15 @@ sourceFile:sourceMapValidationDecorators.ts > greetings: string) { > this.greeting = greetings; > } -1 >Emitted(40, 5) Source(48, 5) + SourceIndex(0) name (Greeter) -2 >Emitted(40, 17) Source(51, 8) + SourceIndex(0) name (Greeter) -3 >Emitted(40, 36) Source(51, 27) + SourceIndex(0) name (Greeter) -4 >Emitted(40, 38) Source(52, 8) + SourceIndex(0) name (Greeter) -5 >Emitted(40, 57) Source(52, 27) + SourceIndex(0) name (Greeter) -6 >Emitted(40, 58) Source(52, 28) + SourceIndex(0) name (Greeter) -7 >Emitted(40, 60) Source(52, 30) + SourceIndex(0) name (Greeter) -8 >Emitted(40, 61) Source(52, 31) + SourceIndex(0) name (Greeter) -9 >Emitted(40, 83) Source(55, 6) + SourceIndex(0) name (Greeter) +1 >Emitted(39, 5) Source(48, 5) + SourceIndex(0) name (Greeter) +2 >Emitted(39, 17) Source(51, 8) + SourceIndex(0) name (Greeter) +3 >Emitted(39, 36) Source(51, 27) + SourceIndex(0) name (Greeter) +4 >Emitted(39, 38) Source(52, 8) + SourceIndex(0) name (Greeter) +5 >Emitted(39, 57) Source(52, 27) + SourceIndex(0) name (Greeter) +6 >Emitted(39, 58) Source(52, 28) + SourceIndex(0) name (Greeter) +7 >Emitted(39, 60) Source(52, 30) + SourceIndex(0) name (Greeter) +8 >Emitted(39, 61) Source(52, 31) + SourceIndex(0) name (Greeter) +9 >Emitted(39, 83) Source(55, 6) + SourceIndex(0) name (Greeter) --- >>> __decorate([PropertyDecorator1, PropertyDecorator2(80), PropertyDecorator1, PropertyDecorator2(90)], Greeter.prototype, "greetings"); 1->^^^^ @@ -613,22 +584,53 @@ sourceFile:sourceMapValidationDecorators.ts 14> 90 15> ) 16> -1->Emitted(41, 5) Source(42, 5) + SourceIndex(0) name (Greeter) -2 >Emitted(41, 17) Source(42, 6) + SourceIndex(0) name (Greeter) -3 >Emitted(41, 35) Source(42, 24) + SourceIndex(0) name (Greeter) -4 >Emitted(41, 37) Source(43, 6) + SourceIndex(0) name (Greeter) -5 >Emitted(41, 55) Source(43, 24) + SourceIndex(0) name (Greeter) -6 >Emitted(41, 56) Source(43, 25) + SourceIndex(0) name (Greeter) -7 >Emitted(41, 58) Source(43, 27) + SourceIndex(0) name (Greeter) -8 >Emitted(41, 59) Source(43, 28) + SourceIndex(0) name (Greeter) -9 >Emitted(41, 61) Source(48, 6) + SourceIndex(0) name (Greeter) -10>Emitted(41, 79) Source(48, 24) + SourceIndex(0) name (Greeter) -11>Emitted(41, 81) Source(49, 6) + SourceIndex(0) name (Greeter) -12>Emitted(41, 99) Source(49, 24) + SourceIndex(0) name (Greeter) -13>Emitted(41, 100) Source(49, 25) + SourceIndex(0) name (Greeter) -14>Emitted(41, 102) Source(49, 27) + SourceIndex(0) name (Greeter) -15>Emitted(41, 103) Source(49, 28) + SourceIndex(0) name (Greeter) -16>Emitted(41, 138) Source(46, 6) + SourceIndex(0) name (Greeter) +1->Emitted(40, 5) Source(42, 5) + SourceIndex(0) name (Greeter) +2 >Emitted(40, 17) Source(42, 6) + SourceIndex(0) name (Greeter) +3 >Emitted(40, 35) Source(42, 24) + SourceIndex(0) name (Greeter) +4 >Emitted(40, 37) Source(43, 6) + SourceIndex(0) name (Greeter) +5 >Emitted(40, 55) Source(43, 24) + SourceIndex(0) name (Greeter) +6 >Emitted(40, 56) Source(43, 25) + SourceIndex(0) name (Greeter) +7 >Emitted(40, 58) Source(43, 27) + SourceIndex(0) name (Greeter) +8 >Emitted(40, 59) Source(43, 28) + SourceIndex(0) name (Greeter) +9 >Emitted(40, 61) Source(48, 6) + SourceIndex(0) name (Greeter) +10>Emitted(40, 79) Source(48, 24) + SourceIndex(0) name (Greeter) +11>Emitted(40, 81) Source(49, 6) + SourceIndex(0) name (Greeter) +12>Emitted(40, 99) Source(49, 24) + SourceIndex(0) name (Greeter) +13>Emitted(40, 100) Source(49, 25) + SourceIndex(0) name (Greeter) +14>Emitted(40, 102) Source(49, 27) + SourceIndex(0) name (Greeter) +15>Emitted(40, 103) Source(49, 28) + SourceIndex(0) name (Greeter) +16>Emitted(40, 138) Source(46, 6) + SourceIndex(0) name (Greeter) +--- +>>> __decorate([PropertyDecorator1, PropertyDecorator2(60)], Greeter, "x1"); +1 >^^^^ +2 > ^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^^ +6 > ^ +7 > ^^ +8 > ^ +9 > ^^^^^^^^^^^^^^^^^^ +1 > +2 > @ +3 > PropertyDecorator1 +4 > + > @ +5 > PropertyDecorator2 +6 > ( +7 > 60 +8 > ) +9 > + > private static x1: number = 10; +1 >Emitted(41, 5) Source(31, 5) + SourceIndex(0) name (Greeter) +2 >Emitted(41, 17) Source(31, 6) + SourceIndex(0) name (Greeter) +3 >Emitted(41, 35) Source(31, 24) + SourceIndex(0) name (Greeter) +4 >Emitted(41, 37) Source(32, 6) + SourceIndex(0) name (Greeter) +5 >Emitted(41, 55) Source(32, 24) + SourceIndex(0) name (Greeter) +6 >Emitted(41, 56) Source(32, 25) + SourceIndex(0) name (Greeter) +7 >Emitted(41, 58) Source(32, 27) + SourceIndex(0) name (Greeter) +8 >Emitted(41, 59) Source(32, 28) + SourceIndex(0) name (Greeter) +9 >Emitted(41, 77) Source(33, 36) + SourceIndex(0) name (Greeter) --- >>> __decorate([ParameterDecorator1, ParameterDecorator2(20)], Greeter, 0); 1 >^^^^