From 82ca09a4a9ca3b736e531bde835b78a0f81faf84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Fri, 25 Jul 2025 13:01:18 +0200 Subject: [PATCH 1/5] Fixed reference searches related to `JsxNamespacedName` --- src/services/findAllReferences.ts | 14 +- src/services/rename.ts | 1 + src/services/services.ts | 2 +- src/services/utilities.ts | 7 +- ...erencesOnJsxNamespacedName1.baseline.jsonc | 204 ++++++++++++++++++ .../renameOnJsxNamespacedName1.baseline.jsonc | 42 ++++ .../findAllReferencesOnJsxNamespacedName1.ts | 19 ++ .../fourslash/renameOnJsxNamespacedName1.ts | 21 ++ 8 files changed, 305 insertions(+), 5 deletions(-) create mode 100644 tests/baselines/reference/findAllReferencesOnJsxNamespacedName1.baseline.jsonc create mode 100644 tests/baselines/reference/renameOnJsxNamespacedName1.baseline.jsonc create mode 100644 tests/cases/fourslash/findAllReferencesOnJsxNamespacedName1.ts create mode 100644 tests/cases/fourslash/renameOnJsxNamespacedName1.ts diff --git a/src/services/findAllReferences.ts b/src/services/findAllReferences.ts index a2ed0feb795a7..9fe87c86102fc 100644 --- a/src/services/findAllReferences.ts +++ b/src/services/findAllReferences.ts @@ -74,6 +74,7 @@ import { getDeclarationFromName, getDeclarationOfKind, getEffectiveModifierFlags, + getEscapedTextOfIdentifierOrLiteral, getLocalSymbolForExportDefault, getMeaningFromDeclaration, getMeaningFromLocation, @@ -149,6 +150,7 @@ import { isJsxClosingElement, isJsxElement, isJsxFragment, + isJsxNamespacedName, isJsxOpeningElement, isJsxSelfClosingElement, isJumpStatementTarget, @@ -202,6 +204,7 @@ import { isVoidExpression, isWriteAccess, JSDocPropertyLikeTag, + JsxNamespacedName, length, map, mapDefined, @@ -1052,11 +1055,14 @@ export namespace Core { } export function getAdjustedNode(node: Node, options: Options): Node { + if (isIdentifier(node) && isJsxNamespacedName(node.parent)) { + node = node.parent; + } if (options.use === FindReferencesUse.References) { - node = getAdjustedReferenceLocation(node); + return getAdjustedReferenceLocation(node); } - else if (options.use === FindReferencesUse.Rename) { - node = getAdjustedRenameLocation(node); + if (options.use === FindReferencesUse.Rename) { + return getAdjustedRenameLocation(node); } return node; } @@ -1835,6 +1841,8 @@ export namespace Core { // falls through I guess case SyntaxKind.Identifier: return (node as PrivateIdentifier | Identifier).text.length === searchSymbolName.length; + case SyntaxKind.JsxNamespacedName: + return (getEscapedTextOfIdentifierOrLiteral(node as JsxNamespacedName) as string).length === searchSymbolName.length; case SyntaxKind.NoSubstitutionTemplateLiteral: case SyntaxKind.StringLiteral: { const str = node as StringLiteralLike; diff --git a/src/services/rename.ts b/src/services/rename.ts index be533ff0b4230..01cdb0ab78d1c 100644 --- a/src/services/rename.ts +++ b/src/services/rename.ts @@ -235,6 +235,7 @@ export function nodeIsEligibleForRename(node: Node): boolean { case SyntaxKind.StringLiteral: case SyntaxKind.NoSubstitutionTemplateLiteral: case SyntaxKind.ThisKeyword: + case SyntaxKind.JsxNamespacedName: return true; case SyntaxKind.NumericLiteral: return isLiteralNameOfPropertyDeclarationOrIndexAccess(node as NumericLiteral); diff --git a/src/services/services.ts b/src/services/services.ts index 2df3b75ae6cb7..ca5a33a9259f5 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -3497,7 +3497,7 @@ export function getNameTable(sourceFile: SourceFile): Map<__String, number> { function initializeNameTable(sourceFile: SourceFile): void { const nameTable = sourceFile.nameTable = new Map(); sourceFile.forEachChild(function walk(node) { - if (isIdentifier(node) && !isTagName(node) && node.escapedText || isStringOrNumericLiteralLike(node) && literalIsName(node)) { + if (isIdentifier(node) && !isTagName(node) && node.escapedText || isStringOrNumericLiteralLike(node) && literalIsName(node) || isJsxNamespacedName(node)) { const text = getEscapedTextOfIdentifierOrLiteral(node); nameTable.set(text, nameTable.get(text) === undefined ? node.pos : -1); } diff --git a/src/services/utilities.ts b/src/services/utilities.ts index ceb56323ceeb6..7b873d526330e 100644 --- a/src/services/utilities.ts +++ b/src/services/utilities.ts @@ -203,6 +203,7 @@ import { isJSDocTypeAlias, isJsxElement, isJsxExpression, + isJsxNamespacedName, isJsxOpeningLikeElement, isJsxText, isKeyword, @@ -1322,6 +1323,9 @@ function getAdjustedLocationForHeritageClause(node: HeritageClause) { } function getAdjustedLocation(node: Node, forRename: boolean): Node { + if (isIdentifier(node) && isJsxNamespacedName(node.parent)) { + node = node.parent; + } const { parent } = node; // /**/ [|name|] ... // /**/ [|name|] ... @@ -1547,7 +1551,8 @@ export function getAdjustedRenameLocation(node: Node): Node { * @internal */ export function getTouchingPropertyName(sourceFile: SourceFile, position: number): Node { - return getTouchingToken(sourceFile, position, n => isPropertyNameLiteral(n) || isKeyword(n.kind) || isPrivateIdentifier(n)); + const token = getTouchingToken(sourceFile, position, n => isPropertyNameLiteral(n) || isKeyword(n.kind) || isPrivateIdentifier(n)); + return isIdentifier(token) && isJsxNamespacedName(token.parent) ? token.parent : token; } /** diff --git a/tests/baselines/reference/findAllReferencesOnJsxNamespacedName1.baseline.jsonc b/tests/baselines/reference/findAllReferencesOnJsxNamespacedName1.baseline.jsonc new file mode 100644 index 0000000000000..dc50bd1754f3b --- /dev/null +++ b/tests/baselines/reference/findAllReferencesOnJsxNamespacedName1.baseline.jsonc @@ -0,0 +1,204 @@ +// === findAllReferences === +// === /types.d.ts === +// declare namespace JSX { +// interface IntrinsicElements { +// 'my-el': { +// <|'[|{| isWriteAccess: true |}prop:foo|]': string;|> +// }; +// } +// } + +// === /a.tsx === +// /> + + // === Definitions === + // === /types.d.ts === + // declare namespace JSX { + // interface IntrinsicElements { + // 'my-el': { + // <|'[|prop:foo|]': string;|> + // }; + // } + // } + + // === Details === + [ + { + "containerKind": "", + "containerName": "", + "kind": "property", + "name": "(property) 'prop:foo': string", + "displayParts": [ + { + "text": "(", + "kind": "punctuation" + }, + { + "text": "property", + "kind": "text" + }, + { + "text": ")", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "'prop:foo'", + "kind": "propertyName" + }, + { + "text": ":", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "string", + "kind": "keyword" + } + ] + } + ] + + + +// === findAllReferences === +// === /types.d.ts === +// declare namespace JSX { +// interface IntrinsicElements { +// 'my-el': { +// <|'[|{| isWriteAccess: true |}prop:foo|]': string;|> +// }; +// } +// } + +// === /a.tsx === +// /> + + // === Definitions === + // === /types.d.ts === + // declare namespace JSX { + // interface IntrinsicElements { + // 'my-el': { + // <|'[|prop:foo|]': string;|> + // }; + // } + // } + + // === Details === + [ + { + "containerKind": "", + "containerName": "", + "kind": "property", + "name": "(property) 'prop:foo': string", + "displayParts": [ + { + "text": "(", + "kind": "punctuation" + }, + { + "text": "property", + "kind": "text" + }, + { + "text": ")", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "'prop:foo'", + "kind": "propertyName" + }, + { + "text": ":", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "string", + "kind": "keyword" + } + ] + } + ] + + + +// === findAllReferences === +// === /types.d.ts === +// declare namespace JSX { +// interface IntrinsicElements { +// 'my-el': { +// <|'/*FIND ALL REFS*/[|{| isWriteAccess: true, isDefinition: true |}prop:foo|]': string;|> +// }; +// } +// } + +// === /a.tsx === +// /> + + // === Definitions === + // === /types.d.ts === + // declare namespace JSX { + // interface IntrinsicElements { + // 'my-el': { + // <|'/*FIND ALL REFS*/[|prop:foo|]': string;|> + // }; + // } + // } + + // === Details === + [ + { + "containerKind": "", + "containerName": "", + "kind": "property", + "name": "(property) 'prop:foo': string", + "displayParts": [ + { + "text": "(", + "kind": "punctuation" + }, + { + "text": "property", + "kind": "text" + }, + { + "text": ")", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "'prop:foo'", + "kind": "propertyName" + }, + { + "text": ":", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "string", + "kind": "keyword" + } + ] + } + ] \ No newline at end of file diff --git a/tests/baselines/reference/renameOnJsxNamespacedName1.baseline.jsonc b/tests/baselines/reference/renameOnJsxNamespacedName1.baseline.jsonc new file mode 100644 index 0000000000000..8984d5968c1dd --- /dev/null +++ b/tests/baselines/reference/renameOnJsxNamespacedName1.baseline.jsonc @@ -0,0 +1,42 @@ +// === findRenameLocations === +// === /types.d.ts === +// declare namespace JSX { +// interface IntrinsicElements { +// 'my-el': { +// <|'[|prop:fooRENAME|]': string;|> +// }; +// } +// } + +// === /a.tsx === +// /> + + + +// === findRenameLocations === +// === /types.d.ts === +// declare namespace JSX { +// interface IntrinsicElements { +// 'my-el': { +// <|'[|prop:fooRENAME|]': string;|> +// }; +// } +// } + +// === /a.tsx === +// /> + + + +// === findRenameLocations === +// === /types.d.ts === +// declare namespace JSX { +// interface IntrinsicElements { +// 'my-el': { +// <|'[|prop:fooRENAME|]/*RENAME*/': string;|> +// }; +// } +// } + +// === /a.tsx === +// /> \ No newline at end of file diff --git a/tests/cases/fourslash/findAllReferencesOnJsxNamespacedName1.ts b/tests/cases/fourslash/findAllReferencesOnJsxNamespacedName1.ts new file mode 100644 index 0000000000000..9cbe580009633 --- /dev/null +++ b/tests/cases/fourslash/findAllReferencesOnJsxNamespacedName1.ts @@ -0,0 +1,19 @@ +/// + +// @jsx: react + +// https://github.com/microsoft/TypeScript/issues/61820 + +// @Filename: /types.d.ts +//// declare namespace JSX { +//// interface IntrinsicElements { +//// 'my-el': { +//// '/*3*/prop:foo': string; +//// }; +//// } +//// } + +// @filename: /a.tsx +//// + +verify.baselineFindAllReferences("1", "2", "3"); diff --git a/tests/cases/fourslash/renameOnJsxNamespacedName1.ts b/tests/cases/fourslash/renameOnJsxNamespacedName1.ts new file mode 100644 index 0000000000000..fd20e87f88398 --- /dev/null +++ b/tests/cases/fourslash/renameOnJsxNamespacedName1.ts @@ -0,0 +1,21 @@ +/// + +// @jsx: react + +// https://github.com/microsoft/TypeScript/issues/61820 + +// @Filename: /types.d.ts +//// declare namespace JSX { +//// interface IntrinsicElements { +//// 'my-el': { +//// 'prop:foo/*3*/': string; +//// }; +//// } +//// } + +// @filename: /a.tsx +//// + +verify.baselineRename("1"); +verify.baselineRename("2"); +verify.baselineRename("3"); From 39c3f9efe7372c7aa263bea49dd4ea0a443885b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Sat, 26 Jul 2025 10:29:25 +0200 Subject: [PATCH 2/5] fixed thing --- src/services/findAllReferences.ts | 2 +- .../findAllReferencesOnJsxNamespacedName1.baseline.jsonc | 6 +++--- .../reference/renameOnJsxNamespacedName1.baseline.jsonc | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/services/findAllReferences.ts b/src/services/findAllReferences.ts index 9fe87c86102fc..82ebd0edff527 100644 --- a/src/services/findAllReferences.ts +++ b/src/services/findAllReferences.ts @@ -328,7 +328,7 @@ export interface SpanEntry { function nodeEntry(node: Node, kind: NodeEntryKind = EntryKind.Node): NodeEntry { return { kind, - node: (node as NamedDeclaration).name || node, + node: isJsxNamespacedName(node) ? node : ((node as NamedDeclaration).name || node), context: getContextNodeForNodeEntry(node), }; } diff --git a/tests/baselines/reference/findAllReferencesOnJsxNamespacedName1.baseline.jsonc b/tests/baselines/reference/findAllReferencesOnJsxNamespacedName1.baseline.jsonc index dc50bd1754f3b..32087f986df19 100644 --- a/tests/baselines/reference/findAllReferencesOnJsxNamespacedName1.baseline.jsonc +++ b/tests/baselines/reference/findAllReferencesOnJsxNamespacedName1.baseline.jsonc @@ -9,7 +9,7 @@ // } // === /a.tsx === -// /> +// /> // === Definitions === // === /types.d.ts === @@ -78,7 +78,7 @@ // } // === /a.tsx === -// /> +// /> // === Definitions === // === /types.d.ts === @@ -147,7 +147,7 @@ // } // === /a.tsx === -// /> +// /> // === Definitions === // === /types.d.ts === diff --git a/tests/baselines/reference/renameOnJsxNamespacedName1.baseline.jsonc b/tests/baselines/reference/renameOnJsxNamespacedName1.baseline.jsonc index 8984d5968c1dd..693cba71eeed6 100644 --- a/tests/baselines/reference/renameOnJsxNamespacedName1.baseline.jsonc +++ b/tests/baselines/reference/renameOnJsxNamespacedName1.baseline.jsonc @@ -9,7 +9,7 @@ // } // === /a.tsx === -// /> +// /> @@ -24,7 +24,7 @@ // } // === /a.tsx === -// /> +// /> @@ -39,4 +39,4 @@ // } // === /a.tsx === -// /> \ No newline at end of file +// /> \ No newline at end of file From f2382183128de0f2c37acfe36db44614df0307e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Sat, 26 Jul 2025 10:42:24 +0200 Subject: [PATCH 3/5] fix names that might get escaped --- src/services/findAllReferences.ts | 6 +- ...erencesOnJsxNamespacedName2.baseline.jsonc | 204 ++++++++++++++++++ .../renameOnJsxNamespacedName2.baseline.jsonc | 42 ++++ .../findAllReferencesOnJsxNamespacedName2.ts | 17 ++ .../fourslash/renameOnJsxNamespacedName2.ts | 21 ++ 5 files changed, 288 insertions(+), 2 deletions(-) create mode 100644 tests/baselines/reference/findAllReferencesOnJsxNamespacedName2.baseline.jsonc create mode 100644 tests/baselines/reference/renameOnJsxNamespacedName2.baseline.jsonc create mode 100644 tests/cases/fourslash/findAllReferencesOnJsxNamespacedName2.ts create mode 100644 tests/cases/fourslash/renameOnJsxNamespacedName2.ts diff --git a/src/services/findAllReferences.ts b/src/services/findAllReferences.ts index 82ebd0edff527..bc49d61c30964 100644 --- a/src/services/findAllReferences.ts +++ b/src/services/findAllReferences.ts @@ -1841,8 +1841,10 @@ export namespace Core { // falls through I guess case SyntaxKind.Identifier: return (node as PrivateIdentifier | Identifier).text.length === searchSymbolName.length; - case SyntaxKind.JsxNamespacedName: - return (getEscapedTextOfIdentifierOrLiteral(node as JsxNamespacedName) as string).length === searchSymbolName.length; + case SyntaxKind.JsxNamespacedName: { + const { namespace, name } = node as JsxNamespacedName; + return (namespace.text.length + 1 + name.text.length) === searchSymbolName.length; + } case SyntaxKind.NoSubstitutionTemplateLiteral: case SyntaxKind.StringLiteral: { const str = node as StringLiteralLike; diff --git a/tests/baselines/reference/findAllReferencesOnJsxNamespacedName2.baseline.jsonc b/tests/baselines/reference/findAllReferencesOnJsxNamespacedName2.baseline.jsonc new file mode 100644 index 0000000000000..6072f06f32845 --- /dev/null +++ b/tests/baselines/reference/findAllReferencesOnJsxNamespacedName2.baseline.jsonc @@ -0,0 +1,204 @@ +// === findAllReferences === +// === /types.d.ts === +// declare namespace JSX { +// interface IntrinsicElements { +// 'my-el': { +// <|'[|{| isWriteAccess: true |}__prop:foo|]': string;|> +// }; +// } +// } + +// === /a.tsx === +// /> + + // === Definitions === + // === /types.d.ts === + // declare namespace JSX { + // interface IntrinsicElements { + // 'my-el': { + // <|'[|__prop:foo|]': string;|> + // }; + // } + // } + + // === Details === + [ + { + "containerKind": "", + "containerName": "", + "kind": "property", + "name": "(property) '__prop:foo': string", + "displayParts": [ + { + "text": "(", + "kind": "punctuation" + }, + { + "text": "property", + "kind": "text" + }, + { + "text": ")", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "'__prop:foo'", + "kind": "propertyName" + }, + { + "text": ":", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "string", + "kind": "keyword" + } + ] + } + ] + + + +// === findAllReferences === +// === /types.d.ts === +// declare namespace JSX { +// interface IntrinsicElements { +// 'my-el': { +// <|'[|{| isWriteAccess: true |}__prop:foo|]': string;|> +// }; +// } +// } + +// === /a.tsx === +// /> + + // === Definitions === + // === /types.d.ts === + // declare namespace JSX { + // interface IntrinsicElements { + // 'my-el': { + // <|'[|__prop:foo|]': string;|> + // }; + // } + // } + + // === Details === + [ + { + "containerKind": "", + "containerName": "", + "kind": "property", + "name": "(property) '__prop:foo': string", + "displayParts": [ + { + "text": "(", + "kind": "punctuation" + }, + { + "text": "property", + "kind": "text" + }, + { + "text": ")", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "'__prop:foo'", + "kind": "propertyName" + }, + { + "text": ":", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "string", + "kind": "keyword" + } + ] + } + ] + + + +// === findAllReferences === +// === /types.d.ts === +// declare namespace JSX { +// interface IntrinsicElements { +// 'my-el': { +// <|'/*FIND ALL REFS*/[|{| isWriteAccess: true, isDefinition: true |}__prop:foo|]': string;|> +// }; +// } +// } + +// === /a.tsx === +// /> + + // === Definitions === + // === /types.d.ts === + // declare namespace JSX { + // interface IntrinsicElements { + // 'my-el': { + // <|'/*FIND ALL REFS*/[|__prop:foo|]': string;|> + // }; + // } + // } + + // === Details === + [ + { + "containerKind": "", + "containerName": "", + "kind": "property", + "name": "(property) '__prop:foo': string", + "displayParts": [ + { + "text": "(", + "kind": "punctuation" + }, + { + "text": "property", + "kind": "text" + }, + { + "text": ")", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "'__prop:foo'", + "kind": "propertyName" + }, + { + "text": ":", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "string", + "kind": "keyword" + } + ] + } + ] \ No newline at end of file diff --git a/tests/baselines/reference/renameOnJsxNamespacedName2.baseline.jsonc b/tests/baselines/reference/renameOnJsxNamespacedName2.baseline.jsonc new file mode 100644 index 0000000000000..92e346379d33e --- /dev/null +++ b/tests/baselines/reference/renameOnJsxNamespacedName2.baseline.jsonc @@ -0,0 +1,42 @@ +// === findRenameLocations === +// === /types.d.ts === +// declare namespace JSX { +// interface IntrinsicElements { +// 'my-el': { +// <|'[|__prop:fooRENAME|]': string;|> +// }; +// } +// } + +// === /a.tsx === +// /> + + + +// === findRenameLocations === +// === /types.d.ts === +// declare namespace JSX { +// interface IntrinsicElements { +// 'my-el': { +// <|'[|__prop:fooRENAME|]': string;|> +// }; +// } +// } + +// === /a.tsx === +// /> + + + +// === findRenameLocations === +// === /types.d.ts === +// declare namespace JSX { +// interface IntrinsicElements { +// 'my-el': { +// <|'[|__prop:fooRENAME|]/*RENAME*/': string;|> +// }; +// } +// } + +// === /a.tsx === +// /> \ No newline at end of file diff --git a/tests/cases/fourslash/findAllReferencesOnJsxNamespacedName2.ts b/tests/cases/fourslash/findAllReferencesOnJsxNamespacedName2.ts new file mode 100644 index 0000000000000..ffb3c0eb7880d --- /dev/null +++ b/tests/cases/fourslash/findAllReferencesOnJsxNamespacedName2.ts @@ -0,0 +1,17 @@ +/// + +// @jsx: react + +// @Filename: /types.d.ts +//// declare namespace JSX { +//// interface IntrinsicElements { +//// 'my-el': { +//// '/*3*/__prop:foo': string; +//// }; +//// } +//// } + +// @filename: /a.tsx +//// + +verify.baselineFindAllReferences("1", "2", "3"); diff --git a/tests/cases/fourslash/renameOnJsxNamespacedName2.ts b/tests/cases/fourslash/renameOnJsxNamespacedName2.ts new file mode 100644 index 0000000000000..49c3640512fc6 --- /dev/null +++ b/tests/cases/fourslash/renameOnJsxNamespacedName2.ts @@ -0,0 +1,21 @@ +/// + +// @jsx: react + +// https://github.com/microsoft/TypeScript/issues/61820 + +// @Filename: /types.d.ts +//// declare namespace JSX { +//// interface IntrinsicElements { +//// 'my-el': { +//// '__prop:foo/*3*/': string; +//// }; +//// } +//// } + +// @filename: /a.tsx +//// + +verify.baselineRename("1"); +verify.baselineRename("2"); +verify.baselineRename("3"); From 14739b7c82eb80be587202ed8e6b3819b1363628 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Sat, 26 Jul 2025 10:46:03 +0200 Subject: [PATCH 4/5] revert some of the adjustment logic given it's now in `getTouchingPropertyName` --- src/services/findAllReferences.ts | 9 +++------ src/services/utilities.ts | 3 --- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/src/services/findAllReferences.ts b/src/services/findAllReferences.ts index bc49d61c30964..ee517d67dc8f2 100644 --- a/src/services/findAllReferences.ts +++ b/src/services/findAllReferences.ts @@ -1055,14 +1055,11 @@ export namespace Core { } export function getAdjustedNode(node: Node, options: Options): Node { - if (isIdentifier(node) && isJsxNamespacedName(node.parent)) { - node = node.parent; - } if (options.use === FindReferencesUse.References) { - return getAdjustedReferenceLocation(node); + node = getAdjustedReferenceLocation(node); } - if (options.use === FindReferencesUse.Rename) { - return getAdjustedRenameLocation(node); + else if (options.use === FindReferencesUse.Rename) { + node = getAdjustedRenameLocation(node); } return node; } diff --git a/src/services/utilities.ts b/src/services/utilities.ts index 7b873d526330e..160f56f68415c 100644 --- a/src/services/utilities.ts +++ b/src/services/utilities.ts @@ -1323,9 +1323,6 @@ function getAdjustedLocationForHeritageClause(node: HeritageClause) { } function getAdjustedLocation(node: Node, forRename: boolean): Node { - if (isIdentifier(node) && isJsxNamespacedName(node.parent)) { - node = node.parent; - } const { parent } = node; // /**/ [|name|] ... // /**/ [|name|] ... From dbbedc7f41b54e07339181d1885c6938ecd32ab3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Sat, 26 Jul 2025 10:46:44 +0200 Subject: [PATCH 5/5] remove unused import --- src/services/findAllReferences.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/services/findAllReferences.ts b/src/services/findAllReferences.ts index ee517d67dc8f2..209acabc0694c 100644 --- a/src/services/findAllReferences.ts +++ b/src/services/findAllReferences.ts @@ -74,7 +74,6 @@ import { getDeclarationFromName, getDeclarationOfKind, getEffectiveModifierFlags, - getEscapedTextOfIdentifierOrLiteral, getLocalSymbolForExportDefault, getMeaningFromDeclaration, getMeaningFromLocation,