diff --git a/packages/eslint-plugin/src/rules/no-unnecessary-qualifier.ts b/packages/eslint-plugin/src/rules/no-unnecessary-qualifier.ts index 56286b8510c..4650ff5905f 100644 --- a/packages/eslint-plugin/src/rules/no-unnecessary-qualifier.ts +++ b/packages/eslint-plugin/src/rules/no-unnecessary-qualifier.ts @@ -94,7 +94,6 @@ export default createRule({ accessedSymbol.flags, sourceCode.getText(name), ); - return ( fromScope === undefined || symbolsAreEqual(accessedSymbol, fromScope) ); @@ -160,7 +159,11 @@ export default createRule({ } return { - TSModuleDeclaration: enterDeclaration, + 'TSModuleDeclaration > TSModuleBlock'( + node: TSESTree.TSModuleBlock, + ): void { + enterDeclaration(node.parent as TSESTree.TSModuleDeclaration); + }, TSEnumDeclaration: enterDeclaration, 'ExportNamedDeclaration[declaration.type="TSModuleDeclaration"]': enterDeclaration, diff --git a/packages/eslint-plugin/tests/rules/no-unnecessary-qualifier.test.ts b/packages/eslint-plugin/tests/rules/no-unnecessary-qualifier.test.ts index e31a8a99ecd..5f118f55ff6 100644 --- a/packages/eslint-plugin/tests/rules/no-unnecessary-qualifier.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unnecessary-qualifier.test.ts @@ -29,6 +29,12 @@ namespace Y { } `, ` +namespace A {} +namespace A.B { + export type Z = 1; +} + `, + ` enum A { X, Y, @@ -146,6 +152,30 @@ namespace A { }, { code: ` +namespace A { + export namespace B.C { + export type D = number; + const x: A.B.C.D = 3; + } +} + `, + errors: [ + { + messageId, + type: AST_NODE_TYPES.TSQualifiedName, + }, + ], + output: ` +namespace A { + export namespace B.C { + export type D = number; + const x: D = 3; + } +} + `, + }, + { + code: ` namespace A { export namespace B { export const x = 3;