Don't run actions related to transferred roots on editable sdks since they can share data with original ones (PY-45708)

PyTransferredSdkRootsKt#transferRoots and PyTransferredSdkRootsKt#removeTransferredRoots skip sdks that are not equal to module one (editable as well).

That's why roots changes were not applied in PythonSdkUpdater#updateSdkPaths but paths to transfer were successfully set.

When PythonSdkUpdater#updateSdkPaths was executed for original sdk, roots changes were not applied since there were no changes in paths to transfer (they were shared with editable copy).

Update PythonSdkAdditionalData containers usages: they returned cached values in `getPathsAsVirtualFiles` after `killAll` was called.

IJ-CR-10935

GitOrigin-RevId: 72a99f7b14e4d30c5886accb0db56d463890f265
This commit is contained in:
Semyon Proshev
2021-07-15 15:06:43 +03:00
committed by intellij-monorepo-bot
parent 65c1fad43b
commit 6ad90fff38
4 changed files with 145 additions and 4 deletions

View File

@@ -61,21 +61,21 @@ public class PythonSdkAdditionalData implements SdkAdditionalData {
}
public void setAddedPathsFromVirtualFiles(@NotNull Set<VirtualFile> addedPaths) {
myAddedPaths.killAll();
myAddedPaths.clear();
for (VirtualFile file : addedPaths) {
myAddedPaths.add(file);
}
}
public void setExcludedPathsFromVirtualFiles(@NotNull Set<VirtualFile> addedPaths) {
myExcludedPaths.killAll();
myExcludedPaths.clear();
for (VirtualFile file : addedPaths) {
myExcludedPaths.add(file);
}
}
public void setPathsToTransferFromVirtualFiles(@NotNull Set<VirtualFile> addedPaths) {
myPathsToTransfer.killAll();
myPathsToTransfer.clear();
for (VirtualFile file : addedPaths) {
myPathsToTransfer.add(file);
}