rename field: replace qualified names with field qName (IDEA-210056)

GitOrigin-RevId: 8ae6037597a183c843d89f5b8870a4162ddf73e3
This commit is contained in:
Anna Kozlova
2019-04-28 17:48:34 +03:00
committed by intellij-monorepo-bot
parent d77a7b258b
commit 64520feaa1
4 changed files with 49 additions and 0 deletions
@@ -7,6 +7,7 @@ import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
import com.intellij.psi.codeStyle.VariableKind;
@@ -420,4 +421,20 @@ public class RenameJavaVariableProcessor extends RenameJavaMemberProcessor {
}
});
}
@Override
public String getQualifiedNameAfterRename(@NotNull final PsiElement element, @NotNull final String newName, final boolean nonJava) {
if (nonJava && element instanceof PsiField) {
final PsiField field = (PsiField)element;
PsiClass containingClass = field.getContainingClass();
if (containingClass != null) {
String qualifiedName = containingClass.getQualifiedName();
if (qualifiedName != null) {
return StringUtil.getQualifiedName(qualifiedName, newName);
}
}
}
return null;
}
}
@@ -0,0 +1 @@
p.A.myField1=foo
@@ -0,0 +1 @@
p.A.myField=foo
@@ -0,0 +1,30 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.java.refactoring;
import com.intellij.JavaTestUtil;
import com.intellij.psi.PsiClass;
import com.intellij.refactoring.rename.RenameProcessor;
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
public class RenameFieldMultiTest extends LightCodeInsightFixtureTestCase {
@Override
protected String getTestDataPath() {
return JavaTestUtil.getJavaTestDataPath() + "/refactoring/renameField/multi/";
}
public void testNonCodeUsages() {
PsiClass aClass = myFixture.addClass("package p;\n" +
"public class A {\n" +
" private String myField;\n" +
"}");
doTest(aClass, "properties");
}
private void doTest(PsiClass aClass, String ext) {
String suffix = getTestName(false);
myFixture.configureByFile("before" + suffix + "." + ext);
new RenameProcessor(getProject(), aClass.findFieldByName("myField", false), "myField1", true, true).run();
myFixture.checkResultByFile("after" + suffix + "." + ext);
}
}