From e3d82b7db3fbdd32922c346aad0bf2a5df147d0e Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Mon, 27 Oct 2014 18:08:49 -0700 Subject: [PATCH] Fixed findAllRefs/getOccs bug where private properties declared in the constructor were only local to the constructor. Fixes #975. --- src/compiler/types.ts | 2 +- src/services/services.ts | 2 +- .../findAllRefsOnPrivateParameterProperty1.ts | 18 ++++++++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 tests/cases/fourslash/findAllRefsOnPrivateParameterProperty1.ts diff --git a/src/compiler/types.ts b/src/compiler/types.ts index aa2ca3b4ba83a..c063370bcc8b2 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -766,7 +766,7 @@ module ts { } export enum SymbolFlags { - FunctionScopedVariable = 0x00000001, // Variable (var) or parameter + FunctionScopedVariable = 0x00000001, // Variable (var) or parameter Property = 0x00000002, // Property or enum member EnumMember = 0x00000004, // Enum member Function = 0x00000008, // Function diff --git a/src/services/services.ts b/src/services/services.ts index d853d06d68e8a..3100b99885ad8 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -3836,7 +3836,7 @@ module ts { if (symbol.getFlags() && (SymbolFlags.Property | SymbolFlags.Method)) { var privateDeclaration = forEach(symbol.getDeclarations(), d => (d.flags & NodeFlags.Private) ? d : undefined); if (privateDeclaration) { - return privateDeclaration.parent; + return getAncestor(privateDeclaration, SyntaxKind.ClassDeclaration); } } diff --git a/tests/cases/fourslash/findAllRefsOnPrivateParameterProperty1.ts b/tests/cases/fourslash/findAllRefsOnPrivateParameterProperty1.ts new file mode 100644 index 0000000000000..6686a771b3474 --- /dev/null +++ b/tests/cases/fourslash/findAllRefsOnPrivateParameterProperty1.ts @@ -0,0 +1,18 @@ +/// + +////class ABCD { +//// constructor(private x: number, public y: number, private [|z|]: number) { +//// } +//// +//// func() { +//// return this.[|z|]; +//// } +////} + +test.ranges().forEach(r => { + goTo.position(r.start); + + test.ranges().forEach(range => { + verify.referencesAtPositionContains(range); + }); +});