From 1ebf90561b310eee24b8b376b3854e546f5ef03b Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Tue, 6 Jan 2015 17:55:54 -0800 Subject: [PATCH] consider type parameters always visible --- src/compiler/checker.ts | 5 ++-- .../reference/visibilityOfTypeParameters.js | 24 +++++++++++++++++++ .../visibilityOfTypeParameters.types | 16 +++++++++++++ .../compiler/visibilityOfTypeParameters.ts | 8 +++++++ 4 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 tests/baselines/reference/visibilityOfTypeParameters.js create mode 100644 tests/baselines/reference/visibilityOfTypeParameters.types create mode 100644 tests/cases/compiler/visibilityOfTypeParameters.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 119b60f71cf..28a22a00c8c 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1587,7 +1587,6 @@ module ts { case SyntaxKind.IndexSignature: case SyntaxKind.Parameter: case SyntaxKind.ModuleBlock: - case SyntaxKind.TypeParameter: case SyntaxKind.FunctionType: case SyntaxKind.ConstructorType: case SyntaxKind.TypeLiteral: @@ -1597,7 +1596,9 @@ module ts { case SyntaxKind.UnionType: case SyntaxKind.ParenthesizedType: return isDeclarationVisible(node.parent); - + + // Type parameters are always visible + case SyntaxKind.TypeParameter: // Source file is always visible case SyntaxKind.SourceFile: return true; diff --git a/tests/baselines/reference/visibilityOfTypeParameters.js b/tests/baselines/reference/visibilityOfTypeParameters.js new file mode 100644 index 00000000000..2cb006737b2 --- /dev/null +++ b/tests/baselines/reference/visibilityOfTypeParameters.js @@ -0,0 +1,24 @@ +//// [visibilityOfTypeParameters.ts] + +export class MyClass { + protected myMethod(val: T): T { + return val; + } +} + +//// [visibilityOfTypeParameters.js] +var MyClass = (function () { + function MyClass() { + } + MyClass.prototype.myMethod = function (val) { + return val; + }; + return MyClass; +})(); +exports.MyClass = MyClass; + + +//// [visibilityOfTypeParameters.d.ts] +export declare class MyClass { + protected myMethod(val: T): T; +} diff --git a/tests/baselines/reference/visibilityOfTypeParameters.types b/tests/baselines/reference/visibilityOfTypeParameters.types new file mode 100644 index 00000000000..60a9330eb7e --- /dev/null +++ b/tests/baselines/reference/visibilityOfTypeParameters.types @@ -0,0 +1,16 @@ +=== tests/cases/compiler/visibilityOfTypeParameters.ts === + +export class MyClass { +>MyClass : MyClass + + protected myMethod(val: T): T { +>myMethod : (val: T) => T +>T : T +>val : T +>T : T +>T : T + + return val; +>val : T + } +} diff --git a/tests/cases/compiler/visibilityOfTypeParameters.ts b/tests/cases/compiler/visibilityOfTypeParameters.ts new file mode 100644 index 00000000000..386d0bb9cb4 --- /dev/null +++ b/tests/cases/compiler/visibilityOfTypeParameters.ts @@ -0,0 +1,8 @@ +// @module:commonjs +//@declaration: true + +export class MyClass { + protected myMethod(val: T): T { + return val; + } +} \ No newline at end of file