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