Skip to content

Remove extra EnsureEditableDocuments calls#57725

Merged
ryzngard merged 1 commit intodotnet:mainfrom
ryzngard:issues/56467_ensure_editable_rename
Nov 12, 2021
Merged

Remove extra EnsureEditableDocuments calls#57725
ryzngard merged 1 commit intodotnet:mainfrom
ryzngard:issues/56467_ensure_editable_rename

Conversation

@ryzngard
Copy link
Copy Markdown
Contributor

Remove single check for EnsureEditableDocuments on each document. This was duplicating the work that the call in TryApplyChanges does, and can have conflicts with linked files.

For example:

  1. If file A.cs is renamed to B.cs and is in 2 projects
  2. Each project will go through and apply changes (lets call P1 and P2)
  3. P1 goes through and calls: ApplyTextChange > EnsureEditable > Rename File (File is now B.cs on disk)
  4. P2 goes through to do the same as P1, but A.cs no longer exists so EnsureEditable will fail (can't check status of a file that doesn't exist)

We should be doing all the work to check edit status upfront so it doesn't collide with the actual edits we need to do. TryApplyChanges is already overridden and does that. This change just removes the extra work we were doing that also created problems for renaming files.

Fixes #56467

…s was duplicating the work that the call in TryApplyChanges does, and can have conflicts with linked files.

For example:
1. If file A.cs is renamed to B.cs and is in 2 projects
2. Each project will go through and apply changes (lets call P1 and P2)
3. P1 goes through and calls: ApplyTextChange > EnsureEditable > Rename File (File is now B.cs on disk)
4. P2 goes through to do the same as P1, but A.cs no longer exists so EnsureEditable will fail (can't check status of a file that doesn't exist)

We should be doing all the work to check edit status upfront so it doesn't collide with the actual edits we need to do. TryApplyChanges is already overridden and does that. This change just removes the extra work we were doing that also created problems for renaming files.
@ryzngard ryzngard requested a review from a team as a code owner November 12, 2021 04:27
@ghost ghost added the Area-IDE label Nov 12, 2021
@ryzngard ryzngard enabled auto-merge (squash) November 12, 2021 21:17
@ryzngard ryzngard merged commit a4d1d8f into dotnet:main Nov 12, 2021
@ghost ghost added this to the Next milestone Nov 12, 2021
@ryzngard ryzngard deleted the issues/56467_ensure_editable_rename branch November 13, 2021 02:19
@jasonmalinowski
Copy link
Copy Markdown
Member

@ryzngard Woohoo, this should also be a nice perf win, probably.

333fred added a commit to 333fred/roslyn that referenced this pull request Nov 17, 2021
…rations

* upstream/main: (3387 commits)
  Fix ValueTracking for index parameters (dotnet#57727)
  Avoid accessing current assembly identity while reporting an accessibility diagnostics for an inaccessible internal symbol. (dotnet#57783)
  Include a type for NoneOperations in VB, print the type in tests (dotnet#57664)
  Don't throw exceptions for file changes after a project is unloaded
  Check up front for being called to remove more than once
  Fix C# language name in spec (dotnet#57427)
  Add test
  Fix null ref in navbars
  Ensure that getting the checksum for a project cone is resilient to its project references being missing
  Check constraints on lifted operator types (dotnet#57050)
  Adjust tests for Windows 11 changes (dotnet#57678)
  Add comment
  Load SVsShellDebugger before calling IVsSolution.CreateSolution
  Remove extra EnsureEditableDocuments  calls (dotnet#57725)
  Don't show nullable annotation in completion items of static field/property
  Don't analyze local function bodies as though they are top level code (dotnet#57623)
  update error code to fix main break (dotnet#57739)
  Error when ref is used on a parameter or return type of an UnmanagedCallersOnly method (dotnet#57043)
  Simplify code from review
  Fix featureflag name for .net 6 host in UI
  ...
@allisonchou allisonchou modified the milestones: Next, 17.1.P2 Nov 30, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Inline rename couldn't rename a file

5 participants