@@ -71,7 +67,6 @@ let externalKey = 'travel';
exports[`changes validationState to isInvalid or nothing 1`] = `
"import { Tag, TagGroup } from "@react-spectrum/s2";
-import { Item } from '@adobe/react-spectrum';
let validationState = 'invalid';
let props = {validationState: 'invalid'};
diff --git a/packages/dev/codemods/src/s1-to-s2/__tests__/imports.test.ts b/packages/dev/codemods/src/s1-to-s2/__tests__/imports.test.ts
index 9d50269b609..539eb2404b7 100644
--- a/packages/dev/codemods/src/s1-to-s2/__tests__/imports.test.ts
+++ b/packages/dev/codemods/src/s1-to-s2/__tests__/imports.test.ts
@@ -127,3 +127,38 @@ import {Button} from "@react-spectrum/s2";
Test
>
`);
+
+test('should remove unused Item/Section import even if name taken in different scope', `
+import {Menu, Section, Item} from '@adobe/react-spectrum';
+
+function foo() {
+ let Item = 'something else';
+ let Section = 'something else';
+}
+
+
+
+
+`);
+
+test('should remove unused Item/Section import if aliased', `
+import {Menu, Section as RSPSection, Item as RSPItem} from '@adobe/react-spectrum';
+import {Section, Item} from 'elsewhere';
+
+
+
+
+
+`);
diff --git a/packages/dev/codemods/src/s1-to-s2/src/codemods/codemod.ts b/packages/dev/codemods/src/s1-to-s2/src/codemods/codemod.ts
index b53877eff39..11437f02938 100644
--- a/packages/dev/codemods/src/s1-to-s2/src/codemods/codemod.ts
+++ b/packages/dev/codemods/src/s1-to-s2/src/codemods/codemod.ts
@@ -203,9 +203,11 @@ export default function transformer(file: FileInfo, api: API, options: Options)
t.isIdentifier(b.path.node.imported) &&
(b.path.node.imported.name === 'Item' || b.path.node.imported.name === 'Section')
) {
- // Keep Item and Section imports
- // TODO: remove if they are unused
- return;
+ // Keep Item and Section imports if they are still used
+ bindings[0]?.path.scope.crawl();
+ if (bindings[0]?.path.scope.bindings[b.path.node.local.name]?.referencePaths.length > 0) {
+ return;
+ }
}
b.path.remove();