Fix 'Changes overlap' error in move to file refactoring#62404
Closed
Vedant224 wants to merge 4 commits intomicrosoft:mainfrom
Closed
Fix 'Changes overlap' error in move to file refactoring#62404Vedant224 wants to merge 4 commits intomicrosoft:mainfrom
Vedant224 wants to merge 4 commits intomicrosoft:mainfrom
Conversation
- Add updateImportsInTargetFile() function to handle import cleanup - Use ImportAdder API to coordinate import changes and prevent overlapping edits - Resolves issue where moving code to files with existing imports failed Fixes microsoft#62378
Author
|
@microsoft-github-policy-service agree |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fix 'Changes overlap' error in move to file refactoring
Fixes #62378
Description
This PR fixes the "Changes overlap" error that occurs when using the "move to file" refactor on code that needs to be moved to a file with existing imports. The issue was caused by uncoordinated text changes that overlapped when both removing imports from the target file and adding new content.
Problem
When moving code to a file that already contains imports, the refactor would fail with:
Changes overlap
This happened because the move-to-file refactor was making conflicting text changes:
These operations weren't coordinated, causing text ranges to overlap.
Solution
updateImportsInTargetFile()function: Uses the ImportAdder API to safely coordinate import removalgetNewStatementsAndRemoveFromOldFile()to call the new function when working with existing target filesTechnical Details
The fix leverages TypeScript's existing
codefix.ImportAdderinfrastructure, which is specifically designed to coordinate import-related text changes without conflicts. This follows the established patterns used throughout the TypeScript codebase for similar import manipulation scenarios.Testing