From 9ed27b23aba2356d5dff855dc28639727ed7529e Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Sun, 30 Nov 2014 11:04:15 -0800 Subject: [PATCH 1/4] Handel assert for missing node kind in isDeclarationVisible for functionType and constructorType --- src/compiler/checker.ts | 2 ++ .../reference/constructorTypeDeclarations.js | 22 ++++++++++++++++ .../constructorTypeDeclarations.types | 17 ++++++++++++ .../reference/functionTypeDeclarations.js | 26 +++++++++++++++++++ .../reference/functionTypeDeclarations.types | 24 +++++++++++++++++ .../compiler/constructorTypeDeclarations.ts | 7 +++++ .../compiler/functionTypeDeclarations.ts | 9 +++++++ 7 files changed, 107 insertions(+) create mode 100644 tests/baselines/reference/constructorTypeDeclarations.js create mode 100644 tests/baselines/reference/constructorTypeDeclarations.types create mode 100644 tests/baselines/reference/functionTypeDeclarations.js create mode 100644 tests/baselines/reference/functionTypeDeclarations.types create mode 100644 tests/cases/compiler/constructorTypeDeclarations.ts create mode 100644 tests/cases/compiler/functionTypeDeclarations.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 6afbbcdd510..dacca9b07d8 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1617,7 +1617,9 @@ module ts { case SyntaxKind.Constructor: case SyntaxKind.ConstructSignature: + case SyntaxKind.ConstructorType: case SyntaxKind.CallSignature: + case SyntaxKind.FunctionType: case SyntaxKind.IndexSignature: case SyntaxKind.Parameter: case SyntaxKind.ModuleBlock: diff --git a/tests/baselines/reference/constructorTypeDeclarations.js b/tests/baselines/reference/constructorTypeDeclarations.js new file mode 100644 index 00000000000..7b983a69bde --- /dev/null +++ b/tests/baselines/reference/constructorTypeDeclarations.js @@ -0,0 +1,22 @@ +//// [constructorTypeDeclarations.ts] + +module schema { + export function createValidator(schema: any): new (data: T) => T { + return undefined; + } +} + +//// [constructorTypeDeclarations.js] +var schema; +(function (_schema) { + function createValidator(schema) { + return undefined; + } + _schema.createValidator = createValidator; +})(schema || (schema = {})); + + +//// [constructorTypeDeclarations.d.ts] +declare module schema { + function createValidator(schema: any): new (data: T) => T; +} diff --git a/tests/baselines/reference/constructorTypeDeclarations.types b/tests/baselines/reference/constructorTypeDeclarations.types new file mode 100644 index 00000000000..34bd6166650 --- /dev/null +++ b/tests/baselines/reference/constructorTypeDeclarations.types @@ -0,0 +1,17 @@ +=== tests/cases/compiler/constructorTypeDeclarations.ts === + +module schema { +>schema : typeof schema + + export function createValidator(schema: any): new (data: T) => T { +>createValidator : (schema: any) => new (data: T) => T +>schema : any +>T : T +>data : T +>T : T +>T : T + + return undefined; +>undefined : undefined + } +} diff --git a/tests/baselines/reference/functionTypeDeclarations.js b/tests/baselines/reference/functionTypeDeclarations.js new file mode 100644 index 00000000000..34408f74b58 --- /dev/null +++ b/tests/baselines/reference/functionTypeDeclarations.js @@ -0,0 +1,26 @@ +//// [functionTypeDeclarations.ts] + +module schema { + export function createValidator(schema: any): (data: T) => T { + return (data: T) => { + return data; + } + } +} + +//// [functionTypeDeclarations.js] +var schema; +(function (_schema) { + function createValidator(schema) { + return function (data) { + return data; + }; + } + _schema.createValidator = createValidator; +})(schema || (schema = {})); + + +//// [functionTypeDeclarations.d.ts] +declare module schema { + function createValidator(schema: any): (data: T) => T; +} diff --git a/tests/baselines/reference/functionTypeDeclarations.types b/tests/baselines/reference/functionTypeDeclarations.types new file mode 100644 index 00000000000..1118444fdf4 --- /dev/null +++ b/tests/baselines/reference/functionTypeDeclarations.types @@ -0,0 +1,24 @@ +=== tests/cases/compiler/functionTypeDeclarations.ts === + +module schema { +>schema : typeof schema + + export function createValidator(schema: any): (data: T) => T { +>createValidator : (schema: any) => (data: T) => T +>schema : any +>T : T +>data : T +>T : T +>T : T + + return (data: T) => { +>(data: T) => { return data; } : (data: T) => T +>T : T +>data : T +>T : T + + return data; +>data : T + } + } +} diff --git a/tests/cases/compiler/constructorTypeDeclarations.ts b/tests/cases/compiler/constructorTypeDeclarations.ts new file mode 100644 index 00000000000..48d6f884632 --- /dev/null +++ b/tests/cases/compiler/constructorTypeDeclarations.ts @@ -0,0 +1,7 @@ +// @declaration: true + +module schema { + export function createValidator(schema: any): new (data: T) => T { + return undefined; + } +} \ No newline at end of file diff --git a/tests/cases/compiler/functionTypeDeclarations.ts b/tests/cases/compiler/functionTypeDeclarations.ts new file mode 100644 index 00000000000..e0d7c7cdbf4 --- /dev/null +++ b/tests/cases/compiler/functionTypeDeclarations.ts @@ -0,0 +1,9 @@ +// @declaration: true + +module schema { + export function createValidator(schema: any): (data: T) => T { + return (data: T) => { + return data; + } + } +} \ No newline at end of file From 0246daec8376afc1af29cf80fc7de9da8da68525 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Sun, 30 Nov 2014 11:47:41 -0800 Subject: [PATCH 2/4] Handel TypeLiterals, ParenTypes, UnionTypes, and ArrayTypes --- src/compiler/checker.ts | 9 +- .../reference/constructorTypeDeclarations.js | 22 --- .../constructorTypeDeclarations.types | 17 --- .../reference/functionTypeDeclarations.js | 26 ---- .../reference/functionTypeDeclarations.types | 24 --- .../isDeclarationVisibleNodeKinds.js | 139 ++++++++++++++++++ .../isDeclarationVisibleNodeKinds.types | 121 +++++++++++++++ .../compiler/constructorTypeDeclarations.ts | 7 - .../compiler/functionTypeDeclarations.ts | 9 -- .../compiler/isDeclarationVisibleNodeKinds.ts | 51 +++++++ 10 files changed, 318 insertions(+), 107 deletions(-) delete mode 100644 tests/baselines/reference/constructorTypeDeclarations.js delete mode 100644 tests/baselines/reference/constructorTypeDeclarations.types delete mode 100644 tests/baselines/reference/functionTypeDeclarations.js delete mode 100644 tests/baselines/reference/functionTypeDeclarations.types create mode 100644 tests/baselines/reference/isDeclarationVisibleNodeKinds.js create mode 100644 tests/baselines/reference/isDeclarationVisibleNodeKinds.types delete mode 100644 tests/cases/compiler/constructorTypeDeclarations.ts delete mode 100644 tests/cases/compiler/functionTypeDeclarations.ts create mode 100644 tests/cases/compiler/isDeclarationVisibleNodeKinds.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index dacca9b07d8..025837511c6 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1617,13 +1617,18 @@ module ts { case SyntaxKind.Constructor: case SyntaxKind.ConstructSignature: - case SyntaxKind.ConstructorType: case SyntaxKind.CallSignature: - case SyntaxKind.FunctionType: case SyntaxKind.IndexSignature: case SyntaxKind.Parameter: case SyntaxKind.ModuleBlock: case SyntaxKind.TypeParameter: + case SyntaxKind.FunctionType: + case SyntaxKind.ConstructorType: + case SyntaxKind.TypeLiteral: + case SyntaxKind.ArrayType: + case SyntaxKind.TupleType: + case SyntaxKind.UnionType: + case SyntaxKind.ParenType: return isDeclarationVisible(node.parent); // Source file is always visible diff --git a/tests/baselines/reference/constructorTypeDeclarations.js b/tests/baselines/reference/constructorTypeDeclarations.js deleted file mode 100644 index 7b983a69bde..00000000000 --- a/tests/baselines/reference/constructorTypeDeclarations.js +++ /dev/null @@ -1,22 +0,0 @@ -//// [constructorTypeDeclarations.ts] - -module schema { - export function createValidator(schema: any): new (data: T) => T { - return undefined; - } -} - -//// [constructorTypeDeclarations.js] -var schema; -(function (_schema) { - function createValidator(schema) { - return undefined; - } - _schema.createValidator = createValidator; -})(schema || (schema = {})); - - -//// [constructorTypeDeclarations.d.ts] -declare module schema { - function createValidator(schema: any): new (data: T) => T; -} diff --git a/tests/baselines/reference/constructorTypeDeclarations.types b/tests/baselines/reference/constructorTypeDeclarations.types deleted file mode 100644 index 34bd6166650..00000000000 --- a/tests/baselines/reference/constructorTypeDeclarations.types +++ /dev/null @@ -1,17 +0,0 @@ -=== tests/cases/compiler/constructorTypeDeclarations.ts === - -module schema { ->schema : typeof schema - - export function createValidator(schema: any): new (data: T) => T { ->createValidator : (schema: any) => new (data: T) => T ->schema : any ->T : T ->data : T ->T : T ->T : T - - return undefined; ->undefined : undefined - } -} diff --git a/tests/baselines/reference/functionTypeDeclarations.js b/tests/baselines/reference/functionTypeDeclarations.js deleted file mode 100644 index 34408f74b58..00000000000 --- a/tests/baselines/reference/functionTypeDeclarations.js +++ /dev/null @@ -1,26 +0,0 @@ -//// [functionTypeDeclarations.ts] - -module schema { - export function createValidator(schema: any): (data: T) => T { - return (data: T) => { - return data; - } - } -} - -//// [functionTypeDeclarations.js] -var schema; -(function (_schema) { - function createValidator(schema) { - return function (data) { - return data; - }; - } - _schema.createValidator = createValidator; -})(schema || (schema = {})); - - -//// [functionTypeDeclarations.d.ts] -declare module schema { - function createValidator(schema: any): (data: T) => T; -} diff --git a/tests/baselines/reference/functionTypeDeclarations.types b/tests/baselines/reference/functionTypeDeclarations.types deleted file mode 100644 index 1118444fdf4..00000000000 --- a/tests/baselines/reference/functionTypeDeclarations.types +++ /dev/null @@ -1,24 +0,0 @@ -=== tests/cases/compiler/functionTypeDeclarations.ts === - -module schema { ->schema : typeof schema - - export function createValidator(schema: any): (data: T) => T { ->createValidator : (schema: any) => (data: T) => T ->schema : any ->T : T ->data : T ->T : T ->T : T - - return (data: T) => { ->(data: T) => { return data; } : (data: T) => T ->T : T ->data : T ->T : T - - return data; ->data : T - } - } -} diff --git a/tests/baselines/reference/isDeclarationVisibleNodeKinds.js b/tests/baselines/reference/isDeclarationVisibleNodeKinds.js new file mode 100644 index 00000000000..65fddb0a92a --- /dev/null +++ b/tests/baselines/reference/isDeclarationVisibleNodeKinds.js @@ -0,0 +1,139 @@ +//// [isDeclarationVisibleNodeKinds.ts] + +// Function types +module schema { + export function createValidator1(schema: any): (data: T) => T { + return undefined; + } +} + +// Constructor types +module schema { + export function createValidator2(schema: any): new (data: T) => T { + return undefined; + } +} + +// union types +module schema { + export function createValidator3(schema: any): number | { new (data: T): T; } { + return undefined; + } +} + +// Array types +module schema { + export function createValidator4(schema: any): { new (data: T): T; }[] { + return undefined; + } +} + + +// TypeLiterals +module schema { + export function createValidator5(schema: any): { new (data: T): T } { + return undefined; + } +} + +// Tuple types +module schema { + export function createValidator6(schema: any): [ new (data: T) => T, number] { + return undefined; + } +} + +// Paren Types +module schema { + export function createValidator7(schema: any): (new (data: T)=>T )[] { + return undefined; + } +} + +//// [isDeclarationVisibleNodeKinds.js] +// Function types +var schema; +(function (_schema) { + function createValidator1(schema) { + return undefined; + } + _schema.createValidator1 = createValidator1; +})(schema || (schema = {})); +// Constructor types +var schema; +(function (_schema) { + function createValidator2(schema) { + return undefined; + } + _schema.createValidator2 = createValidator2; +})(schema || (schema = {})); +// union types +var schema; +(function (_schema) { + function createValidator3(schema) { + return undefined; + } + _schema.createValidator3 = createValidator3; +})(schema || (schema = {})); +// Array types +var schema; +(function (_schema) { + function createValidator4(schema) { + return undefined; + } + _schema.createValidator4 = createValidator4; +})(schema || (schema = {})); +// TypeLiterals +var schema; +(function (_schema) { + function createValidator5(schema) { + return undefined; + } + _schema.createValidator5 = createValidator5; +})(schema || (schema = {})); +// Tuple types +var schema; +(function (_schema) { + function createValidator6(schema) { + return undefined; + } + _schema.createValidator6 = createValidator6; +})(schema || (schema = {})); +// Paren Types +var schema; +(function (_schema) { + function createValidator7(schema) { + return undefined; + } + _schema.createValidator7 = createValidator7; +})(schema || (schema = {})); + + +//// [isDeclarationVisibleNodeKinds.d.ts] +declare module schema { + function createValidator1(schema: any): (data: T) => T; +} +declare module schema { + function createValidator2(schema: any): new (data: T) => T; +} +declare module schema { + function createValidator3(schema: any): number | { + new (data: T): T; + }; +} +declare module schema { + function createValidator4(schema: any): { + new (data: T): T; + }[]; +} +declare module schema { + function createValidator5(schema: any): { + new (data: T): T; + }; +} +declare module schema { + function createValidator6(schema: any): [new (data: T) => T, number]; +} +declare module schema { + function createValidator7(schema: any): (new (data: T) => T)[]; +} diff --git a/tests/baselines/reference/isDeclarationVisibleNodeKinds.types b/tests/baselines/reference/isDeclarationVisibleNodeKinds.types new file mode 100644 index 00000000000..c95ded99be3 --- /dev/null +++ b/tests/baselines/reference/isDeclarationVisibleNodeKinds.types @@ -0,0 +1,121 @@ +=== tests/cases/compiler/isDeclarationVisibleNodeKinds.ts === + +// Function types +module schema { +>schema : typeof schema + + export function createValidator1(schema: any): (data: T) => T { +>createValidator1 : (schema: any) => (data: T) => T +>schema : any +>T : T +>data : T +>T : T +>T : T + + return undefined; +>undefined : undefined + } +} + +// Constructor types +module schema { +>schema : typeof schema + + export function createValidator2(schema: any): new (data: T) => T { +>createValidator2 : (schema: any) => new (data: T) => T +>schema : any +>T : T +>data : T +>T : T +>T : T + + return undefined; +>undefined : undefined + } +} + +// union types +module schema { +>schema : typeof schema + + export function createValidator3(schema: any): number | { new (data: T): T; } { +>createValidator3 : (schema: any) => number | (new (data: T) => T) +>schema : any +>T : T +>data : T +>T : T +>T : T + + return undefined; +>undefined : undefined + } +} + +// Array types +module schema { +>schema : typeof schema + + export function createValidator4(schema: any): { new (data: T): T; }[] { +>createValidator4 : (schema: any) => (new (data: T) => T)[] +>schema : any +>T : T +>data : T +>T : T +>T : T + + return undefined; +>undefined : undefined + } +} + + +// TypeLiterals +module schema { +>schema : typeof schema + + export function createValidator5(schema: any): { new (data: T): T } { +>createValidator5 : (schema: any) => new (data: T) => T +>schema : any +>T : T +>data : T +>T : T +>T : T + + return undefined; +>undefined : undefined + } +} + +// Tuple types +module schema { +>schema : typeof schema + + export function createValidator6(schema: any): [ new (data: T) => T, number] { +>createValidator6 : (schema: any) => [new (data: T) => T, number] +>schema : any +>T : T +>data : T +>T : T +>T : T + + return undefined; +>undefined : undefined + } +} + +// Paren Types +module schema { +>schema : typeof schema + + export function createValidator7(schema: any): (new (data: T)=>T )[] { +>createValidator7 : (schema: any) => (new (data: T) => T)[] +>schema : any +>T : T +>data : T +>T : T +>T : T + + return undefined; +>undefined : undefined + } +} diff --git a/tests/cases/compiler/constructorTypeDeclarations.ts b/tests/cases/compiler/constructorTypeDeclarations.ts deleted file mode 100644 index 48d6f884632..00000000000 --- a/tests/cases/compiler/constructorTypeDeclarations.ts +++ /dev/null @@ -1,7 +0,0 @@ -// @declaration: true - -module schema { - export function createValidator(schema: any): new (data: T) => T { - return undefined; - } -} \ No newline at end of file diff --git a/tests/cases/compiler/functionTypeDeclarations.ts b/tests/cases/compiler/functionTypeDeclarations.ts deleted file mode 100644 index e0d7c7cdbf4..00000000000 --- a/tests/cases/compiler/functionTypeDeclarations.ts +++ /dev/null @@ -1,9 +0,0 @@ -// @declaration: true - -module schema { - export function createValidator(schema: any): (data: T) => T { - return (data: T) => { - return data; - } - } -} \ No newline at end of file diff --git a/tests/cases/compiler/isDeclarationVisibleNodeKinds.ts b/tests/cases/compiler/isDeclarationVisibleNodeKinds.ts new file mode 100644 index 00000000000..3e8b890ef56 --- /dev/null +++ b/tests/cases/compiler/isDeclarationVisibleNodeKinds.ts @@ -0,0 +1,51 @@ +// @declaration: true + +// Function types +module schema { + export function createValidator1(schema: any): (data: T) => T { + return undefined; + } +} + +// Constructor types +module schema { + export function createValidator2(schema: any): new (data: T) => T { + return undefined; + } +} + +// union types +module schema { + export function createValidator3(schema: any): number | { new (data: T): T; } { + return undefined; + } +} + +// Array types +module schema { + export function createValidator4(schema: any): { new (data: T): T; }[] { + return undefined; + } +} + + +// TypeLiterals +module schema { + export function createValidator5(schema: any): { new (data: T): T } { + return undefined; + } +} + +// Tuple types +module schema { + export function createValidator6(schema: any): [ new (data: T) => T, number] { + return undefined; + } +} + +// Paren Types +module schema { + export function createValidator7(schema: any): (new (data: T)=>T )[] { + return undefined; + } +} \ No newline at end of file From fde249d6a8e3f63acb0a7d24d9e50062e84437ed Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Sun, 30 Nov 2014 23:54:21 -0800 Subject: [PATCH 3/4] Handle TypeReference nodes --- src/compiler/checker.ts | 1 + .../isDeclarationVisibleNodeKinds.js | 23 ++++++++++++++++++- .../isDeclarationVisibleNodeKinds.types | 19 +++++++++++++++ .../compiler/isDeclarationVisibleNodeKinds.ts | 9 +++++++- 4 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 025837511c6..9b4f6e16c73 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1625,6 +1625,7 @@ module ts { case SyntaxKind.FunctionType: case SyntaxKind.ConstructorType: case SyntaxKind.TypeLiteral: + case SyntaxKind.TypeReference: case SyntaxKind.ArrayType: case SyntaxKind.TupleType: case SyntaxKind.UnionType: diff --git a/tests/baselines/reference/isDeclarationVisibleNodeKinds.js b/tests/baselines/reference/isDeclarationVisibleNodeKinds.js index 65fddb0a92a..fbdb179e6c8 100644 --- a/tests/baselines/reference/isDeclarationVisibleNodeKinds.js +++ b/tests/baselines/reference/isDeclarationVisibleNodeKinds.js @@ -48,7 +48,15 @@ module schema { export function createValidator7(schema: any): (new (data: T)=>T )[] { return undefined; } -} +} + +// Type reference +module schema { + export function createValidator8(schema: any): Array<{ (data: T) : T}> { + return undefined; + } +} + //// [isDeclarationVisibleNodeKinds.js] // Function types @@ -107,6 +115,14 @@ var schema; } _schema.createValidator7 = createValidator7; })(schema || (schema = {})); +// Type reference +var schema; +(function (_schema) { + function createValidator8(schema) { + return undefined; + } + _schema.createValidator8 = createValidator8; +})(schema || (schema = {})); //// [isDeclarationVisibleNodeKinds.d.ts] @@ -137,3 +153,8 @@ declare module schema { declare module schema { function createValidator7(schema: any): (new (data: T) => T)[]; } +declare module schema { + function createValidator8(schema: any): Array<{ + (data: T): T; + }>; +} diff --git a/tests/baselines/reference/isDeclarationVisibleNodeKinds.types b/tests/baselines/reference/isDeclarationVisibleNodeKinds.types index c95ded99be3..70b0fa09ebd 100644 --- a/tests/baselines/reference/isDeclarationVisibleNodeKinds.types +++ b/tests/baselines/reference/isDeclarationVisibleNodeKinds.types @@ -119,3 +119,22 @@ module schema { >undefined : undefined } } + +// Type reference +module schema { +>schema : typeof schema + + export function createValidator8(schema: any): Array<{ (data: T) : T}> { +>createValidator8 : (schema: any) => ((data: T) => T)[] +>schema : any +>Array : T[] +>T : T +>data : T +>T : T +>T : T + + return undefined; +>undefined : undefined + } +} + diff --git a/tests/cases/compiler/isDeclarationVisibleNodeKinds.ts b/tests/cases/compiler/isDeclarationVisibleNodeKinds.ts index 3e8b890ef56..34950be8943 100644 --- a/tests/cases/compiler/isDeclarationVisibleNodeKinds.ts +++ b/tests/cases/compiler/isDeclarationVisibleNodeKinds.ts @@ -48,4 +48,11 @@ module schema { export function createValidator7(schema: any): (new (data: T)=>T )[] { return undefined; } -} \ No newline at end of file +} + +// Type reference +module schema { + export function createValidator8(schema: any): Array<{ (data: T) : T}> { + return undefined; + } +} From 0f6574e7e6c15213d2afcea740540cde65ab44ca Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Mon, 1 Dec 2014 13:20:56 -0800 Subject: [PATCH 4/4] Add test for getters and setters --- .../isDeclarationVisibleNodeKinds.js | 41 ++++++++++++++++++- .../isDeclarationVisibleNodeKinds.types | 28 +++++++++++++ .../compiler/isDeclarationVisibleNodeKinds.ts | 13 ++++++ 3 files changed, 81 insertions(+), 1 deletion(-) diff --git a/tests/baselines/reference/isDeclarationVisibleNodeKinds.js b/tests/baselines/reference/isDeclarationVisibleNodeKinds.js index fbdb179e6c8..0d1664c7f59 100644 --- a/tests/baselines/reference/isDeclarationVisibleNodeKinds.js +++ b/tests/baselines/reference/isDeclarationVisibleNodeKinds.js @@ -56,7 +56,18 @@ module schema { return undefined; } } - + + +module schema { + export class T { + get createValidator9(): (data: T) => T { + return undefined; + } + + set createValidator10(v: (data: T) => T) { + } + } +} //// [isDeclarationVisibleNodeKinds.js] // Function types @@ -123,6 +134,28 @@ var schema; } _schema.createValidator8 = createValidator8; })(schema || (schema = {})); +var schema; +(function (schema) { + var T = (function () { + function T() { + } + Object.defineProperty(T.prototype, "createValidator9", { + get: function () { + return undefined; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(T.prototype, "createValidator10", { + set: function (v) { + }, + enumerable: true, + configurable: true + }); + return T; + })(); + schema.T = T; +})(schema || (schema = {})); //// [isDeclarationVisibleNodeKinds.d.ts] @@ -158,3 +191,9 @@ declare module schema { (data: T): T; }>; } +declare module schema { + class T { + createValidator9: (data: T) => T; + createValidator10: (data: T) => T; + } +} diff --git a/tests/baselines/reference/isDeclarationVisibleNodeKinds.types b/tests/baselines/reference/isDeclarationVisibleNodeKinds.types index 70b0fa09ebd..b3fe8d684b7 100644 --- a/tests/baselines/reference/isDeclarationVisibleNodeKinds.types +++ b/tests/baselines/reference/isDeclarationVisibleNodeKinds.types @@ -138,3 +138,31 @@ module schema { } } + +module schema { +>schema : typeof schema + + export class T { +>T : T + + get createValidator9(): (data: T) => T { +>createValidator9 : (data: T) => T +>T : T +>data : T +>T : T +>T : T + + return undefined; +>undefined : undefined + } + + set createValidator10(v: (data: T) => T) { +>createValidator10 : (data: T) => T +>v : (data: T) => T +>T : T +>data : T +>T : T +>T : T + } + } +} diff --git a/tests/cases/compiler/isDeclarationVisibleNodeKinds.ts b/tests/cases/compiler/isDeclarationVisibleNodeKinds.ts index 34950be8943..0434c40ee6a 100644 --- a/tests/cases/compiler/isDeclarationVisibleNodeKinds.ts +++ b/tests/cases/compiler/isDeclarationVisibleNodeKinds.ts @@ -1,4 +1,5 @@ // @declaration: true +// @target: es5 // Function types module schema { @@ -56,3 +57,15 @@ module schema { return undefined; } } + + +module schema { + export class T { + get createValidator9(): (data: T) => T { + return undefined; + } + + set createValidator10(v: (data: T) => T) { + } + } +} \ No newline at end of file