mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Java: update Inline Parameter refactoring messages
GitOrigin-RevId: 3c9c0e2886810b5ad14e7fb4b51250c83b829c39
This commit is contained in:
committed by
intellij-monorepo-bot
parent
f7fcafc161
commit
f959b2e066
+24
-26
@@ -73,7 +73,6 @@ public class InlineParameterExpressionProcessor extends BaseRefactoringProcessor
|
||||
return InlineParameterHandler.getRefactoringName();
|
||||
}
|
||||
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
protected UsageViewDescriptor createUsageViewDescriptor(UsageInfo @NotNull [] usages) {
|
||||
@@ -82,7 +81,6 @@ public class InlineParameterExpressionProcessor extends BaseRefactoringProcessor
|
||||
|
||||
@Override
|
||||
protected UsageInfo @NotNull [] findUsages() {
|
||||
|
||||
int parameterIndex = myMethod.getParameterList().getParameterIndex(myParameter);
|
||||
final Map<PsiVariable, PsiElement> localToParamRef = new HashMap<>();
|
||||
final PsiExpression[] arguments = myMethodCall.getArgumentList().getExpressions();
|
||||
@@ -141,7 +139,6 @@ public class InlineParameterExpressionProcessor extends BaseRefactoringProcessor
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
final PsiParameter[] parameters = myMethod.getParameterList().getParameters();
|
||||
final List<ParameterInfoImpl> psiParameters = new ArrayList<>();
|
||||
int paramIdx = 0;
|
||||
@@ -337,26 +334,29 @@ public class InlineParameterExpressionProcessor extends BaseRefactoringProcessor
|
||||
final PsiElement element = expression.resolve();
|
||||
if (element instanceof PsiMember member && !member.hasModifierProperty(PsiModifier.STATIC)) {
|
||||
if (myMethod.hasModifierProperty(PsiModifier.STATIC)) {
|
||||
myConflicts.putValue(expression, JavaRefactoringBundle.message("inline.parameter.dependency.unavailable.in.static.method",
|
||||
myConflicts.putValue(expression, JavaRefactoringBundle.message("inline.parameter.dependency.unavailable.in.parameter.method",
|
||||
RefactoringUIUtil.getDescription(element, false)));
|
||||
}
|
||||
}
|
||||
if (element instanceof PsiMethod || element instanceof PsiField) {
|
||||
if (!mySameClass && !((PsiModifierListOwner)element).hasModifierProperty(PsiModifier.STATIC)) {
|
||||
myConflicts.putValue(expression, JavaRefactoringBundle.message("inline.parameter.depends.on.non.static"));
|
||||
myConflicts.putValue(expression, JavaRefactoringBundle.message("inline.parameter.depends.on.non.static",
|
||||
RefactoringUIUtil.getDescription(element, true)));
|
||||
} else if (!PsiUtil.isAccessible((PsiMember)element, myMethod, null)) {
|
||||
myConflicts.putValue(expression, JavaRefactoringBundle.message("inline.parameter.depends.on.unavailable.value"));
|
||||
myConflicts.putValue(expression, JavaRefactoringBundle.message("inline.parameter.dependency.unavailable.in.parameter.method",
|
||||
RefactoringUIUtil.getDescription(element, true)));
|
||||
}
|
||||
} else if (element instanceof PsiParameter param && PsiTreeUtil.isAncestor(param.getDeclarationScope(), myInitializer, true)) {
|
||||
boolean bound = false;
|
||||
for (PsiParameter parameter : myMethod.getParameterList().getParameters()) {
|
||||
if (parameter.getType().equals(((PsiParameter)element).getType()) && parameter.getName().equals(((PsiParameter)element).getName())) {
|
||||
if (parameter.getType().equals(param.getType()) && parameter.getName().equals(param.getName())) {
|
||||
bound = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!bound) {
|
||||
myConflicts.putValue(expression, JavaRefactoringBundle.message("inline.parameter.depends.on.caller.parameter"));
|
||||
myConflicts.putValue(expression, JavaRefactoringBundle.message("inline.parameter.depends.on.caller.parameter",
|
||||
RefactoringUIUtil.getDescription(element, false)));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -374,10 +374,9 @@ public class InlineParameterExpressionProcessor extends BaseRefactoringProcessor
|
||||
}
|
||||
final PsiClass methodContainingClass = myMethod.getContainingClass();
|
||||
LOG.assertTrue(methodContainingClass != null);
|
||||
if (!PsiTreeUtil.isAncestor(containingClass, methodContainingClass, false)) {
|
||||
myConflicts.putValue(thisExpression, JavaRefactoringBundle.message("inline.parameter.depends.on.unavailable.element.inside.method", "this"));
|
||||
} else if (myMethod.hasModifierProperty(PsiModifier.STATIC)) {
|
||||
myConflicts.putValue(thisExpression, JavaRefactoringBundle.message("inline.parameter.depends.on.this.inside.static.method"));
|
||||
if (!PsiTreeUtil.isAncestor(containingClass, methodContainingClass, false) || myMethod.hasModifierProperty(PsiModifier.STATIC)) {
|
||||
myConflicts.putValue(thisExpression, JavaRefactoringBundle.message("inline.parameter.dependency.unavailable.in.parameter.method",
|
||||
"<b><code>this<code></b>"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -386,9 +385,9 @@ public class InlineParameterExpressionProcessor extends BaseRefactoringProcessor
|
||||
super.visitReferenceElement(reference);
|
||||
if (myMethod.hasModifierProperty(PsiModifier.STATIC)) {
|
||||
final PsiElement resolved = reference.resolve();
|
||||
if (resolved instanceof PsiClass cls &&
|
||||
(PsiUtil.isInnerClass(cls) || PsiUtil.isLocalClass(cls))) {
|
||||
myConflicts.putValue(reference, JavaRefactoringBundle.message("inline.parameter.depends.on.non.static.class"));
|
||||
if (resolved instanceof PsiClass cls && (PsiUtil.isInnerClass(cls) || PsiUtil.isLocalClass(cls))) {
|
||||
myConflicts.putValue(reference, JavaRefactoringBundle.message("inline.parameter.depends.on.non.static.class",
|
||||
RefactoringUIUtil.getDescription(resolved, true)));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -397,25 +396,24 @@ public class InlineParameterExpressionProcessor extends BaseRefactoringProcessor
|
||||
public void visitNewExpression(@NotNull PsiNewExpression expression) {
|
||||
super.visitNewExpression(expression);
|
||||
final PsiJavaCodeReferenceElement reference = expression.getClassOrAnonymousClassReference();
|
||||
if (reference != null && reference.resolve() instanceof PsiClass refClass) {
|
||||
final String classUnavailableMessage =
|
||||
JavaRefactoringBundle.message("inline.parameter.depends.on.unavailable.element.inside.method",
|
||||
RefactoringUIUtil.getDescription(refClass, true));
|
||||
if (!PsiUtil.isAccessible(refClass, myMethod, null)) {
|
||||
myConflicts.putValue(expression, classUnavailableMessage);
|
||||
if (reference != null && reference.resolve() instanceof PsiClass aClass) {
|
||||
if (!PsiUtil.isAccessible(aClass, myMethod, null)) {
|
||||
myConflicts.putValue(expression, JavaRefactoringBundle.message("inline.parameter.dependency.unavailable.in.parameter.method",
|
||||
RefactoringUIUtil.getDescription(aClass, true)));
|
||||
}
|
||||
else {
|
||||
final PsiClass methodContainingClass = myMethod.getContainingClass();
|
||||
LOG.assertTrue(methodContainingClass != null);
|
||||
if (!PsiTreeUtil.isAncestor(myMethod, refClass, false)) {
|
||||
PsiElement parent = refClass;
|
||||
while ((parent = parent.getParent()) instanceof PsiClass) {
|
||||
if (!PsiUtil.isAccessible((PsiClass)parent, myMethod, null)) {
|
||||
if (!PsiTreeUtil.isAncestor(myMethod, aClass, false)) {
|
||||
PsiElement parent = aClass;
|
||||
while ((parent = parent.getParent()) instanceof PsiClass parentClass) {
|
||||
if (!PsiUtil.isAccessible(parentClass, myMethod, null)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!(parent instanceof PsiFile)) {
|
||||
myConflicts.putValue(expression, classUnavailableMessage);
|
||||
myConflicts.putValue(expression, JavaRefactoringBundle.message("inline.parameter.dependency.unavailable.in.parameter.method",
|
||||
RefactoringUIUtil.getDescription(aClass, true)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+17
-24
@@ -1,4 +1,4 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.java.refactoring.inline;
|
||||
|
||||
import com.intellij.JavaTestUtil;
|
||||
@@ -12,8 +12,6 @@ import com.intellij.refactoring.util.CommonRefactoringUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
|
||||
|
||||
public class InlineParameterTest extends LightRefactoringTestCase {
|
||||
@NotNull
|
||||
@Override
|
||||
@@ -90,7 +88,7 @@ public class InlineParameterTest extends LightRefactoringTestCase {
|
||||
doTest(false);
|
||||
}
|
||||
catch (BaseRefactoringProcessor.ConflictsInTestsException e) {
|
||||
assertEquals("Parameter initializer depends on this which is not available inside the method and cannot be inlined", e.getMessage());
|
||||
assertEquals("Parameter initializer depends on <b><code>this<code></b> which is not accessible inside the parameter's method", e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -135,7 +133,7 @@ public class InlineParameterTest extends LightRefactoringTestCase {
|
||||
doTest(false);
|
||||
}
|
||||
catch (BaseRefactoringProcessor.ConflictsInTestsException e) {
|
||||
assertEquals("Parameter initializer depends on class <b><code>User.Local</code></b> which is not available inside the method and cannot be inlined", e.getMessage());
|
||||
assertEquals("Parameter initializer depends on class <b><code>User.Local</code></b> which is not accessible inside the parameter's method", e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -168,7 +166,7 @@ public class InlineParameterTest extends LightRefactoringTestCase {
|
||||
doTest(false);
|
||||
}
|
||||
catch (CommonRefactoringUtil.RefactoringErrorHintException e) {
|
||||
assertEquals("Inline parameter which has write usages is not supported", e.getMessage());
|
||||
assertEquals("Inlining parameter with write usages is not supported", e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -177,7 +175,7 @@ public class InlineParameterTest extends LightRefactoringTestCase {
|
||||
doTest(false);
|
||||
}
|
||||
catch (BaseRefactoringProcessor.ConflictsInTestsException e) {
|
||||
assertEquals("Parameter initializer depends on local class <b><code>Local</code></b> which is not available inside the method and cannot be inlined", e.getMessage());
|
||||
assertEquals("Parameter initializer depends on local class <b><code>Local</code></b> which is not accessible inside the parameter's method", e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -198,7 +196,7 @@ public class InlineParameterTest extends LightRefactoringTestCase {
|
||||
doTest(false);
|
||||
}
|
||||
catch (BaseRefactoringProcessor.ConflictsInTestsException e) {
|
||||
assertEquals("Parameter initializer depends on local class <b><code>Local</code></b> which is not available inside the method and cannot be inlined", e.getMessage());
|
||||
assertEquals("Parameter initializer depends on local class <b><code>Local</code></b> which is not accessible inside the parameter's method", e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -207,7 +205,7 @@ public class InlineParameterTest extends LightRefactoringTestCase {
|
||||
doTest(false);
|
||||
}
|
||||
catch (BaseRefactoringProcessor.ConflictsInTestsException e) {
|
||||
assertEquals("Parameter initializer depends on value which is not available inside method and cannot be inlined", e.getMessage());
|
||||
assertEquals("Write access to parameter initializer cannot be inlined", e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -216,7 +214,7 @@ public class InlineParameterTest extends LightRefactoringTestCase {
|
||||
doTest(false);
|
||||
}
|
||||
catch (BaseRefactoringProcessor.ConflictsInTestsException e) {
|
||||
assertEquals("Parameter initializer depends on callers parameter", e.getMessage());
|
||||
assertEquals("Parameter initializer depends on caller's parameter <b><code>objct</code></b>", e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -239,7 +237,7 @@ public class InlineParameterTest extends LightRefactoringTestCase {
|
||||
doTest(false);
|
||||
}
|
||||
catch (BaseRefactoringProcessor.ConflictsInTestsException e) {
|
||||
assertEquals("Parameter initializer depends on method <b><code>provideObject()</code></b> which is not available inside the static method", e.getMessage());
|
||||
assertEquals("Parameter initializer depends on method <b><code>provideObject()</code></b> which is not accessible inside the parameter's method", e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -248,7 +246,7 @@ public class InlineParameterTest extends LightRefactoringTestCase {
|
||||
doTest(false);
|
||||
}
|
||||
catch (BaseRefactoringProcessor.ConflictsInTestsException e) {
|
||||
assertEquals("Parameter initializer depends on non static class which is not available inside static method", e.getMessage());
|
||||
assertEquals("Parameter initializer depends on non-static class <b><code>ExpData.DD</code></b> which is not accessible inside the parameter's method", e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -257,7 +255,7 @@ public class InlineParameterTest extends LightRefactoringTestCase {
|
||||
doTest(false);
|
||||
}
|
||||
catch (BaseRefactoringProcessor.ConflictsInTestsException e) {
|
||||
assertEquals("Parameter initializer depends on this which is not available inside the static method", e.getMessage());
|
||||
assertEquals("Parameter initializer depends on <b><code>this<code></b> which is not accessible inside the parameter's method", e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -266,7 +264,7 @@ public class InlineParameterTest extends LightRefactoringTestCase {
|
||||
doTest(false);
|
||||
}
|
||||
catch (BaseRefactoringProcessor.ConflictsInTestsException e) {
|
||||
assertEquals("Parameter initializer depends on value which is not available inside method", e.getMessage());
|
||||
assertEquals("Parameter initializer depends on method <b><code>VisibilityPinline.provideObject()</code></b> which is not accessible inside the parameter's method", e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -275,7 +273,7 @@ public class InlineParameterTest extends LightRefactoringTestCase {
|
||||
doTest(false);
|
||||
}
|
||||
catch (BaseRefactoringProcessor.ConflictsInTestsException e) {
|
||||
assertEquals("Parameter initializer depends on value which is not available inside method and cannot be inlined", e.getMessage());
|
||||
assertEquals("Write access to parameter initializer cannot be inlined", e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -284,7 +282,7 @@ public class InlineParameterTest extends LightRefactoringTestCase {
|
||||
doTest(false);
|
||||
}
|
||||
catch (BaseRefactoringProcessor.ConflictsInTestsException e) {
|
||||
assertEquals("Parameter initializer depends on callers parameter", e.getMessage());
|
||||
assertEquals("Parameter initializer depends on caller's parameter <b><code>b</code></b>", e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -302,9 +300,7 @@ public class InlineParameterTest extends LightRefactoringTestCase {
|
||||
}
|
||||
catch (CommonRefactoringUtil.RefactoringErrorHintException e) {
|
||||
assertEquals("Cannot find constant initializer for parameter", e.getMessage());
|
||||
return;
|
||||
}
|
||||
fail("Initializer shoul not be found");
|
||||
}
|
||||
|
||||
public void testParameterDefWithWriteAccess() {
|
||||
@@ -319,7 +315,6 @@ public class InlineParameterTest extends LightRefactoringTestCase {
|
||||
public void testSameSignatureExistConflict() {
|
||||
try {
|
||||
doTest(false);
|
||||
fail();
|
||||
}
|
||||
catch (BaseRefactoringProcessor.ConflictsInTestsException e) {
|
||||
assertEquals("Method doTest() is already defined in the class <b><code>Test</code></b>", e.getMessage());
|
||||
@@ -330,19 +325,17 @@ public class InlineParameterTest extends LightRefactoringTestCase {
|
||||
doTest(false);
|
||||
}
|
||||
|
||||
private void doTest(final boolean createLocal) {
|
||||
private void doTest(boolean createLocal) {
|
||||
getProject().putUserData(InlineParameterExpressionProcessor.CREATE_LOCAL_FOR_TESTS, createLocal);
|
||||
|
||||
String name = getTestName(false);
|
||||
@NonNls String fileName = "/refactoring/inlineParameter/" + name + ".java";
|
||||
@NonNls String fileName = "/refactoring/inlineParameter/" + getTestName(false) + ".java";
|
||||
configureByFile(fileName);
|
||||
performAction();
|
||||
checkResultByFile(null, fileName + ".after", true);
|
||||
}
|
||||
|
||||
private void performAction() {
|
||||
final PsiElement element = TargetElementUtil.findTargetElement(getEditor(), TargetElementUtil
|
||||
.REFERENCED_ELEMENT_ACCEPTED |
|
||||
final PsiElement element = TargetElementUtil.findTargetElement(getEditor(), TargetElementUtil.REFERENCED_ELEMENT_ACCEPTED |
|
||||
TargetElementUtil.ELEMENT_NAME_ACCEPTED);
|
||||
new InlineParameterHandler().inlineElement(getProject(), getEditor(), element);
|
||||
}
|
||||
|
||||
@@ -330,20 +330,17 @@ inline.parameter.confirmation=Inline parameter ''{0}'' with initializer ''{1}''?
|
||||
inline.parameter.error.hierarchy=Inline parameter is not supported when method is a part of inheritance hierarchy
|
||||
inline.parameter.error.non.project.method=Inline is not supported for non-project methods
|
||||
inline.parameter.error.varargs=Inline for varargs parameters is not supported
|
||||
inline.parameter.dependency.unavailable.in.static.method=Parameter initializer depends on {0} which is not available inside the static method
|
||||
inline.parameter.depends.on.caller.parameter=Parameter initializer depends on callers parameter
|
||||
inline.parameter.depends.on.non.static=Parameter initializer depends on non static member from some other class
|
||||
inline.parameter.depends.on.non.static.class=Parameter initializer depends on non static class which is not available inside static method
|
||||
inline.parameter.depends.on.this.inside.static.method=Parameter initializer depends on this which is not available inside the static method
|
||||
inline.parameter.depends.on.unavailable.element.inside.method=Parameter initializer depends on {0} which is not available inside the method and cannot be inlined
|
||||
inline.parameter.depends.on.unavailable.value=Parameter initializer depends on value which is not available inside method
|
||||
inline.parameter.initializer.depends.on.inaccessible.value=Parameter initializer depends on value which is not available inside method and cannot be inlined
|
||||
inline.parameter.dependency.unavailable.in.parameter.method=Parameter initializer depends on {0} which is not accessible inside the parameter''s method
|
||||
inline.parameter.depends.on.caller.parameter=Parameter initializer depends on caller''s {0}
|
||||
inline.parameter.depends.on.non.static=Parameter initializer depends on non-static {0} and an instance is not available inside the parameter''s method
|
||||
inline.parameter.depends.on.non.static.class=Parameter initializer depends on non-static {0} which is not accessible inside the parameter''s method
|
||||
inline.parameter.initializer.depends.on.inaccessible.value=Write access to parameter initializer cannot be inlined
|
||||
inline.parameter.method.usages.progress=Searching for method usages
|
||||
inline.parameter.no.usages.warning.message=Method has no usages
|
||||
inline.parameter.not.accessible.warning.message=Constant initializer is not accessible in method body
|
||||
inline.parameter.refactoring=Inline Parameter
|
||||
inline.parameter.replace.with.local.checkbox=R&eplace with local variable
|
||||
inline.parameter.write.usages.warning.message=Inline parameter which has write usages is not supported
|
||||
inline.parameter.write.usages.warning.message=Inlining parameter with write usages is not supported
|
||||
inline.pattern.variable.title=Inline Pattern Variable
|
||||
inline.super.class=Inline Super Class
|
||||
inline.super.class.action.name=Inline Super Class\u2026
|
||||
|
||||
Reference in New Issue
Block a user