mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-13 21:55:01 +07:00
IDEA-171094 Extract method object fails
This commit is contained in:
+7
-12
@@ -339,15 +339,7 @@ public class ExtractMethodObjectProcessor extends BaseRefactoringProcessor {
|
||||
for (PsiVariable variable : outputVariables) {
|
||||
PsiVariable var = (PsiVariable)declaredElement;
|
||||
if (Comparing.strEqual(var.getName(), variable.getName())) {
|
||||
PsiExpression initializer = var.getInitializer();
|
||||
if (initializer == null) {
|
||||
replacementMap.put(var, null);
|
||||
}
|
||||
else {
|
||||
PsiStatement assignmentStatement = myElementFactory
|
||||
.createStatementFromText(var2FieldNames.get(variable.getName()) + " = " + initializer.getText() + ";", statement);
|
||||
replacementMap.put(var, assignmentStatement);
|
||||
}
|
||||
replacementMap.put(var, var.getInitializer());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -412,11 +404,14 @@ public class ExtractMethodObjectProcessor extends BaseRefactoringProcessor {
|
||||
}
|
||||
}
|
||||
else if (statement instanceof PsiLocalVariable) {
|
||||
PsiLocalVariable variable = (PsiLocalVariable)statement;
|
||||
final PsiLocalVariable variable = (PsiLocalVariable)statement;
|
||||
variable.normalizeDeclaration();
|
||||
PsiDeclarationStatement declaration = PsiTreeUtil.getParentOfType(statement, PsiDeclarationStatement.class);
|
||||
final PsiExpression initializer = variable.getInitializer();
|
||||
LOG.assertTrue(initializer != null);
|
||||
final PsiStatement assignmentStatement = myElementFactory.createStatementFromText(var2FieldNames.get(variable.getName()) + " = " + initializer.getText() + ";", statement);
|
||||
final PsiDeclarationStatement declaration = PsiTreeUtil.getParentOfType(statement, PsiDeclarationStatement.class);
|
||||
LOG.assertTrue(declaration != null);
|
||||
declaration.replace(replacement);
|
||||
declaration.replace(assignmentStatement);
|
||||
}
|
||||
else {
|
||||
if (statement instanceof PsiReturnStatement) {
|
||||
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
public class RenameInInitializer {
|
||||
public static void main(String[] args) {
|
||||
<selection>int aValue = 100;
|
||||
int result = 1000;
|
||||
int a = IntStream.of(aValue, result).peek(x -> {}).sum();</selection>
|
||||
System.out.println(aValue + result + a);
|
||||
}
|
||||
}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
public class RenameInInitializer {
|
||||
public static void main(String[] args) {
|
||||
Inner inner = new Inner().invoke();
|
||||
int aValue = inner.getValue();
|
||||
int result = inner.getResult();
|
||||
int a = inner.getA();
|
||||
System.out.println(aValue + result + a);
|
||||
}
|
||||
|
||||
private static class Inner {
|
||||
private int myValue;
|
||||
private int myResult;
|
||||
private int myA;
|
||||
|
||||
public int getValue() {
|
||||
return myValue;
|
||||
}
|
||||
|
||||
public int getResult() {
|
||||
return myResult;
|
||||
}
|
||||
|
||||
public int getA() {
|
||||
return myA;
|
||||
}
|
||||
|
||||
public Inner invoke() {
|
||||
myValue = 100;
|
||||
myResult = 1000;
|
||||
myA = IntStream.of(myValue, myResult).peek(x -> {
|
||||
}).sum();
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
||||
+8
@@ -152,7 +152,15 @@ public class ExtractMethodObjectWithMultipleExitPointsTest extends LightRefactor
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testRenameInInitializer() throws Exception {
|
||||
doTestWithIdeaCodeStyleSettings();
|
||||
}
|
||||
|
||||
public void testSameFieldsWithPrefix() throws Exception {
|
||||
doTestWithIdeaCodeStyleSettings();
|
||||
}
|
||||
|
||||
private void doTestWithIdeaCodeStyleSettings() throws Exception {
|
||||
final CodeStyleSettings settings = CodeStyleSettingsManager.getSettings(getProject());
|
||||
String oldPrefix = settings.FIELD_NAME_PREFIX;
|
||||
settings.FIELD_NAME_PREFIX = "my";
|
||||
|
||||
Reference in New Issue
Block a user