From fd5d5f7b3f010e7e1d8433fb9434f5549a5a8719 Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Mon, 27 Mar 2017 19:03:59 -0700 Subject: [PATCH] no-unnecessary-qualifier: Stop using symbolsAreEqual --- src/rules/noUnnecessaryQualifierRule.ts | 15 ++------------- .../test-global-2.ts.lint | 4 ++++ .../no-unnecessary-qualifier/test-global.ts.fix | 2 +- .../no-unnecessary-qualifier/test-global.ts.lint | 2 +- 4 files changed, 8 insertions(+), 15 deletions(-) create mode 100644 test/rules/no-unnecessary-qualifier/test-global-2.ts.lint diff --git a/src/rules/noUnnecessaryQualifierRule.ts b/src/rules/noUnnecessaryQualifierRule.ts index 52646e1a766..9e5b262f869 100644 --- a/src/rules/noUnnecessaryQualifierRule.ts +++ b/src/rules/noUnnecessaryQualifierRule.ts @@ -19,7 +19,6 @@ import * as utils from "tsutils"; import * as ts from "typescript"; import * as Lint from "../index"; -import { arraysAreEqual } from "../utils"; export class Rule extends Lint.Rules.TypedRule { /* tslint:disable:object-literal-sort-keys */ @@ -101,7 +100,7 @@ class Walker extends Lint.ProgramAwareRuleWalker { // If the symbol in scope is different, the qualifier is necessary. const fromScope = this.getSymbolInScope(qualifier, accessedSymbol.flags, name.text); - return fromScope === undefined || symbolsAreEqual(fromScope, accessedSymbol); + return fromScope === undefined || fromScope === accessedSymbol; } private getSymbolInScope(node: ts.Node, flags: ts.SymbolFlags, name: string): ts.Symbol | undefined { @@ -115,7 +114,7 @@ class Walker extends Lint.ProgramAwareRuleWalker { } private symbolIsNamespaceInScope(symbol: ts.Symbol): boolean { - if (symbol.getDeclarations().some((decl) => this.namespacesInScope.some((ns) => nodesAreEqual(ns, decl)))) { + if (symbol.getDeclarations().some((decl) => this.namespacesInScope.some((ns) => ns === decl))) { return true; } const alias = this.tryGetAliasedSymbol(symbol); @@ -126,13 +125,3 @@ class Walker extends Lint.ProgramAwareRuleWalker { return Lint.isSymbolFlagSet(symbol, ts.SymbolFlags.Alias) ? this.getTypeChecker().getAliasedSymbol(symbol) : undefined; } } - -// TODO: Should just be `===`. See https://github.com/palantir/tslint/issues/1969 -function nodesAreEqual(a: ts.Node, b: ts.Node) { - return a.pos === b.pos; -} - -// Only needed in global files. Likely due to https://github.com/palantir/tslint/issues/1969. See `test.global.ts.lint`. -function symbolsAreEqual(a: ts.Symbol, b: ts.Symbol): boolean { - return arraysAreEqual(a.declarations, b.declarations, nodesAreEqual); -} diff --git a/test/rules/no-unnecessary-qualifier/test-global-2.ts.lint b/test/rules/no-unnecessary-qualifier/test-global-2.ts.lint new file mode 100644 index 00000000000..2365cfd2eb0 --- /dev/null +++ b/test/rules/no-unnecessary-qualifier/test-global-2.ts.lint @@ -0,0 +1,4 @@ +namespace M { + // Used in test-global.ts + export type T = number; +} diff --git a/test/rules/no-unnecessary-qualifier/test-global.ts.fix b/test/rules/no-unnecessary-qualifier/test-global.ts.fix index 6db27bd8f6a..b82929776f6 100644 --- a/test/rules/no-unnecessary-qualifier/test-global.ts.fix +++ b/test/rules/no-unnecessary-qualifier/test-global.ts.fix @@ -1,5 +1,5 @@ -// We need `symbolsAreEqual` in global files. namespace N { export type T = number; export const x: T = 0; + export const x: M.T = 0; } diff --git a/test/rules/no-unnecessary-qualifier/test-global.ts.lint b/test/rules/no-unnecessary-qualifier/test-global.ts.lint index 2901f62a880..67436ffccfe 100644 --- a/test/rules/no-unnecessary-qualifier/test-global.ts.lint +++ b/test/rules/no-unnecessary-qualifier/test-global.ts.lint @@ -1,6 +1,6 @@ -// We need `symbolsAreEqual` in global files. namespace N { export type T = number; export const x: N.T = 0; ~ [Qualifier is unnecessary since 'N' is in scope.] + export const x: M.T = 0; }