Revert "Don't consider 'typeof a' as using 'a' (#28528)"

This reverts commit 0c4ceeec24f16f87e75386355c86ac38612a1175.
This commit is contained in:
Nathan Shively-Sanders 2018-11-26 14:45:19 -08:00
parent 21965c16ca
commit 1f34a4e25f
7 changed files with 2 additions and 75 deletions

View File

@ -1483,7 +1483,7 @@ namespace ts {
// We just climbed up parents looking for the name, meaning that we started in a descendant node of `lastLocation`.
// If `result === lastSelfReferenceLocation.symbol`, that means that we are somewhere inside `lastSelfReferenceLocation` looking up a name, and resolving to `lastLocation` itself.
// That means that this is a self-reference of `lastLocation`, and shouldn't count this when considering whether `lastLocation` is used.
if (isUse && result && (!lastSelfReferenceLocation || result !== lastSelfReferenceLocation.symbol) && !isInTypeQuery(originalLocation!)) {
if (isUse && result && (!lastSelfReferenceLocation || result !== lastSelfReferenceLocation.symbol)) {
result.isReferenced! |= meaning;
}
@ -19055,7 +19055,7 @@ namespace ts {
}
function markPropertyAsReferenced(prop: Symbol, nodeForCheckWriteOnly: Node | undefined, isThisAccess: boolean) {
if (nodeForCheckWriteOnly && isInTypeQuery(nodeForCheckWriteOnly) || !(prop.flags & SymbolFlags.ClassMember) || !prop.valueDeclaration || !hasModifier(prop.valueDeclaration, ModifierFlags.Private)) {
if (!prop || !(prop.flags & SymbolFlags.ClassMember) || !prop.valueDeclaration || !hasModifier(prop.valueDeclaration, ModifierFlags.Private)) {
return;
}
if (nodeForCheckWriteOnly && isWriteOnlyAccess(nodeForCheckWriteOnly) && !(prop.flags & SymbolFlags.SetAccessor && !(prop.flags & SymbolFlags.GetAccessor))) {

View File

@ -1,9 +0,0 @@
tests/cases/compiler/unusedParameterUsedInTypeOf.ts(1,14): error TS6133: 'a' is declared but its value is never read.
==== tests/cases/compiler/unusedParameterUsedInTypeOf.ts (1 errors) ====
function f1 (a: number, b: typeof a) {
~
!!! error TS6133: 'a' is declared but its value is never read.
return b;
}

View File

@ -1,11 +0,0 @@
tests/cases/compiler/unusedPropertyUsedInTypeOf.ts(2,29): error TS6133: 'x' is declared but its value is never read.
==== tests/cases/compiler/unusedPropertyUsedInTypeOf.ts (1 errors) ====
class C {
private static readonly x: number;
~
!!! error TS6133: 'x' is declared but its value is never read.
m(p: typeof C.x) { return p; }
}

View File

@ -1,14 +0,0 @@
//// [unusedPropertyUsedInTypeOf.ts]
class C {
private static readonly x: number;
m(p: typeof C.x) { return p; }
}
//// [unusedPropertyUsedInTypeOf.js]
var C = /** @class */ (function () {
function C() {
}
C.prototype.m = function (p) { return p; };
return C;
}());

View File

@ -1,16 +0,0 @@
=== tests/cases/compiler/unusedPropertyUsedInTypeOf.ts ===
class C {
>C : Symbol(C, Decl(unusedPropertyUsedInTypeOf.ts, 0, 0))
private static readonly x: number;
>x : Symbol(C.x, Decl(unusedPropertyUsedInTypeOf.ts, 0, 9))
m(p: typeof C.x) { return p; }
>m : Symbol(C.m, Decl(unusedPropertyUsedInTypeOf.ts, 1, 38))
>p : Symbol(p, Decl(unusedPropertyUsedInTypeOf.ts, 2, 6))
>C.x : Symbol(C.x, Decl(unusedPropertyUsedInTypeOf.ts, 0, 9))
>C : Symbol(C, Decl(unusedPropertyUsedInTypeOf.ts, 0, 0))
>x : Symbol(C.x, Decl(unusedPropertyUsedInTypeOf.ts, 0, 9))
>p : Symbol(p, Decl(unusedPropertyUsedInTypeOf.ts, 2, 6))
}

View File

@ -1,16 +0,0 @@
=== tests/cases/compiler/unusedPropertyUsedInTypeOf.ts ===
class C {
>C : C
private static readonly x: number;
>x : number
m(p: typeof C.x) { return p; }
>m : (p: number) => number
>p : number
>C.x : number
>C : typeof C
>x : number
>p : number
}

View File

@ -1,7 +0,0 @@
// @noUnusedLocals:true
// @noUnusedParameters:true
class C {
private static readonly x: number;
m(p: typeof C.x) { return p; }
}