mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[java] inline parameter: add context to avoid qualify conflicting field names (IDEA-281362)
GitOrigin-RevId: 08cf0efc30b17590e6592e37b7e91910ad6e5da6
This commit is contained in:
committed by
intellij-monorepo-bot
parent
eacd3576f5
commit
58bb24679c
+11
-12
@@ -257,22 +257,21 @@ public class InlineParameterExpressionProcessor extends BaseRefactoringProcessor
|
||||
myInitializer = (PsiExpression)RefactoringUtil.replaceElementsWithMap(myInitializer, replacements);
|
||||
|
||||
if (myCreateLocal) {
|
||||
final PsiElementFactory factory = JavaPsiFacade.getElementFactory(myMethod.getProject());
|
||||
PsiDeclarationStatement localDeclaration =
|
||||
factory.createVariableDeclarationStatement(myParameter.getName(), myParameter.getType(), myInitializer);
|
||||
final PsiLocalVariable declaredVar = (PsiLocalVariable)localDeclaration.getDeclaredElements()[0];
|
||||
PsiUtil.setModifierProperty(declaredVar, PsiModifier.FINAL, myParameter.hasModifierProperty(PsiModifier.FINAL));
|
||||
final PsiExpression localVarInitializer =
|
||||
InlineUtil.inlineVariable(myParameter, myInitializer, (PsiReferenceExpression)factory.createExpressionFromText(myParameter.getName(), myMethod));
|
||||
final PsiExpression initializer = declaredVar.getInitializer();
|
||||
LOG.assertTrue(initializer != null);
|
||||
initializer.replace(localVarInitializer);
|
||||
final PsiCodeBlock body = myMethod.getBody();
|
||||
if (body != null) {
|
||||
PsiElement anchor = findAnchorForLocalVariableDeclaration(body);
|
||||
body.addAfter(localDeclaration, anchor);
|
||||
final PsiElementFactory factory = JavaPsiFacade.getElementFactory(myMethod.getProject());
|
||||
PsiExpression refExpression = factory.createExpressionFromText(myParameter.getName(), anchor);
|
||||
PsiDeclarationStatement localDeclaration =
|
||||
factory.createVariableDeclarationStatement(myParameter.getName(), myParameter.getType(), refExpression);
|
||||
|
||||
localDeclaration = (PsiDeclarationStatement)body.addAfter(localDeclaration, anchor);
|
||||
final PsiLocalVariable declaredVar = (PsiLocalVariable)localDeclaration.getDeclaredElements()[0];
|
||||
PsiUtil.setModifierProperty(declaredVar, PsiModifier.FINAL, myParameter.hasModifierProperty(PsiModifier.FINAL));
|
||||
InlineUtil.inlineVariable(myParameter, myInitializer, (PsiReferenceExpression)declaredVar.getInitializer());
|
||||
}
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
for (PsiJavaCodeReferenceElement paramRef : paramRefsToInline) {
|
||||
InlineUtil.inlineVariable(myParameter, myInitializer, paramRef);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
class A {
|
||||
private String f;
|
||||
|
||||
public void m() {
|
||||
m1(f);
|
||||
}
|
||||
|
||||
private void m1(String <caret>f) {
|
||||
if (!f.isEmpty()) {
|
||||
System.out.println(f);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
class A {
|
||||
private String f;
|
||||
|
||||
public void m() {
|
||||
m1();
|
||||
}
|
||||
|
||||
private void m1() {
|
||||
String f = this.f;
|
||||
if (!f.isEmpty()) {
|
||||
System.out.println(f);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -188,6 +188,10 @@ public class InlineParameterTest extends LightRefactoringTestCase {
|
||||
public void testRefNewTopLevel() {
|
||||
doTest(false);
|
||||
}
|
||||
|
||||
public void testConflictingFieldName() {
|
||||
doTest(true);
|
||||
}
|
||||
|
||||
public void testRefNewLocal() {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user