mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
introduce parameter: show conflict if method won't be record accessor anymore (IDEA-267382)
GitOrigin-RevId: 89340945fc0ab2907c59e65d90cf0b4755b5b219
This commit is contained in:
committed by
intellij-monorepo-bot
parent
0783365643
commit
f3e4488e71
+10
@@ -17,6 +17,7 @@ import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.searches.MethodReferencesSearch;
|
||||
import com.intellij.psi.search.searches.OverridingMethodsSearch;
|
||||
import com.intellij.psi.util.JavaPsiRecordUtil;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.refactoring.BaseRefactoringProcessor;
|
||||
import com.intellij.refactoring.IntroduceParameterRefactoring;
|
||||
@@ -253,6 +254,15 @@ public class IntroduceParameterProcessor extends BaseRefactoringProcessor implem
|
||||
|
||||
if (!myGenerateDelegate) {
|
||||
detectAccessibilityConflicts(usagesIn, conflicts);
|
||||
if (myMethodToReplaceIn == myMethodToSearchFor) {
|
||||
PsiRecordComponent recordComponent = JavaPsiRecordUtil.getRecordComponentForAccessor(myMethodToReplaceIn);
|
||||
if (recordComponent != null) {
|
||||
String message = JavaRefactoringBundle.message("0.will.no.longer.be.record.component.accessor",
|
||||
RefactoringUIUtil.getDescription(myMethodToReplaceIn, true),
|
||||
RefactoringUIUtil.getDescription(recordComponent, true));
|
||||
conflicts.putValue(myMethodToReplaceIn, message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (myParameterInitializer != null && !myMethodToReplaceIn.hasModifierProperty(PsiModifier.PRIVATE)) {
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
record R(String name) {
|
||||
String name() {
|
||||
return <selection>"_"</selection> + name;
|
||||
}
|
||||
}
|
||||
@@ -15,6 +15,7 @@ import com.intellij.refactoring.introduceParameter.IntroduceParameterHandler;
|
||||
import com.intellij.refactoring.introduceParameter.IntroduceParameterProcessor;
|
||||
import com.intellij.refactoring.introduceParameter.Util;
|
||||
import com.intellij.refactoring.util.occurrences.ExpressionOccurrenceManager;
|
||||
import com.intellij.testFramework.IdeaTestUtil;
|
||||
import com.intellij.testFramework.TestDataPath;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import it.unimi.dsi.fastutil.ints.IntArrayList;
|
||||
@@ -164,6 +165,12 @@ public class IntroduceParameterTest extends LightRefactoringTestCase {
|
||||
doTest(IntroduceParameterRefactoring.REPLACE_FIELDS_WITH_GETTERS_INACCESSIBLE, false, true, false, false);
|
||||
}
|
||||
|
||||
public void testRecordGetterImpl() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_16, () ->
|
||||
doTest(IntroduceParameterRefactoring.REPLACE_FIELDS_WITH_GETTERS_INACCESSIBLE, false, false, false, false,
|
||||
"method <b><code>R.name()</code></b> will no longer be record component <b><code>name</code></b> getter"));
|
||||
}
|
||||
|
||||
public void testParameterInFor() {
|
||||
configureByFile("/refactoring/introduceParameter/beforeParameterInFor.java");
|
||||
performForLocal(true, true, true, false, false);
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
0.will.become.inaccessible.from.1={0} will become inaccessible from {1}
|
||||
0.will.hide.renamed.1={0} will hide renamed {1}
|
||||
0.will.no.longer.override.1={0} will no longer override {1}
|
||||
0.will.no.longer.be.record.component.accessor={0} will no longer be {1} getter
|
||||
0.will.not.be.accessible.from.1.after.inlining={0} will not be accessible from {1} after inlining
|
||||
0.will.override.renamed.1={0} will override renamed {1}
|
||||
a.package.local.class.0.will.no.longer.be.accessible.from.1=Package-local class {0} will no longer be accessible from {1}
|
||||
|
||||
Reference in New Issue
Block a user