[java-refactoring] Safe-delete: do not try to delete non-members from non-project files

Fixes IDEA-353914 Baka information is displayed in "Safe Delete" window

GitOrigin-RevId: 1a453b21754a440090d022b5d832cd1c7928b09e
This commit is contained in:
Tagir Valeev
2024-05-27 12:15:47 +00:00
committed by intellij-monorepo-bot
parent fdca03869d
commit 2e1d43405b
5 changed files with 23 additions and 2 deletions
@@ -153,9 +153,11 @@ public class SafeDeleteFix extends LocalQuickFixAndIntentionActionOnPsiElement {
});
PsiFile containingFile = body.getContainingFile();
PsiManager manager = containingFile.getManager();
return elementsToCheck
.stream()
.filter(additionalFilter)
.filter(manager::isInProject)
.filter(m -> m != containingFile)
.filter(m -> !PsiTreeUtil.isAncestor(psiMember, m, true))
.filter(m -> !(m instanceof PsiMember member) ||
@@ -0,0 +1,9 @@
class AccidentalPropertyRef {
// mockjdk-21 contains a file java/time/chrono/hijrah-config-Hijrah-umalqura_islamic-umalqura.properties
// which contains a line like
// 1493=30 29 30 29 30 29 29 30 29 30 30 30
// this test ensures that we don't try to remove this line from the JDK
public static void <caret>main(String[] args) {
String s = "1493";
}
}
@@ -0,0 +1,2 @@
class AccidentalPropertyRef {
}
@@ -1,5 +1,3 @@
import java.util.function.Consumer;
public class Subst {
void test1() {
test2();
@@ -8,6 +8,7 @@ import com.intellij.ide.scratch.ScratchFileService;
import com.intellij.ide.scratch.ScratchRootType;
import com.intellij.lang.java.JavaLanguage;
import com.intellij.openapi.application.WriteAction;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.roots.ModuleRootModificationUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.pom.java.LanguageLevel;
@@ -35,6 +36,11 @@ public class SafeDeleteTest extends MultiFileTestCase {
ModuleRootModificationUtil.updateModel(getModule(), DefaultLightProjectDescriptor::addJetBrainsAnnotations);
}
@Override
protected Sdk getTestProjectJdk() {
return IdeaTestUtil.getMockJdk21();
}
@NotNull
@Override
protected String getTestDataPath() {
@@ -137,6 +143,10 @@ public class SafeDeleteTest extends MultiFileTestCase {
doSingleFileTest();
}
public void testAccidentalPropertyRef() throws Exception {
doSingleFileTest();
}
public void testDeleteMethodWithPropertyUsage() {
doTest("Foo");
}