inline: restore braces when needed (IDEA-132946)

This commit is contained in:
Anna Kozlova
2014-11-17 12:11:34 +01:00
parent c9d8a91f38
commit 956108b49f
5 changed files with 66 additions and 4 deletions
@@ -1252,7 +1252,7 @@ public class InlineMethodProcessor extends BaseRefactoringProcessor {
private static final Key<String> MARK_KEY = Key.create("");
private PsiReferenceExpression[] addBracesWhenNeeded(PsiReferenceExpression[] refs) throws IncorrectOperationException {
public PsiReferenceExpression[] addBracesWhenNeeded(PsiReferenceExpression[] refs) throws IncorrectOperationException {
ArrayList<PsiReferenceExpression> refsVector = new ArrayList<PsiReferenceExpression>();
ArrayList<PsiCodeBlock> addedBracesVector = new ArrayList<PsiCodeBlock>();
myAddedClassInitializers = new HashMap<PsiField, PsiClassInitializer>();
@@ -62,8 +62,10 @@ public class InlineCallFix extends InspectionGadgetsFix {
}
protected void inline(Project project, PsiReferenceExpression methodExpression, PsiMethod method) {
new InlineMethodProcessor(project, method, methodExpression, null, true,
JavaRefactoringSettings.getInstance().RENAME_SEARCH_IN_COMMENTS_FOR_METHOD,
JavaRefactoringSettings.getInstance().RENAME_SEARCH_FOR_TEXT_FOR_METHOD).inlineMethodCall(methodExpression);
final JavaRefactoringSettings settings = JavaRefactoringSettings.getInstance();
final InlineMethodProcessor processor = new InlineMethodProcessor(project, method, methodExpression, null, true,
settings.RENAME_SEARCH_IN_COMMENTS_FOR_METHOD,
settings.RENAME_SEARCH_FOR_TEXT_FOR_METHOD);
processor.inlineMethodCall(processor.addBracesWhenNeeded(new PsiReferenceExpression[]{methodExpression})[0]);
}
}
@@ -0,0 +1,14 @@
class Test {
private int field = 5;
private void reproduce() {
if (field == 5) {
field = 10;
}
}
private void setField(int value) {
field = value;
}
}
@@ -0,0 +1,13 @@
class Test {
private int field = 5;
private void reproduce() {
if (field == 5)
setF<caret>ield(10);
}
private void setField(int value) {
field = value;
}
}
@@ -0,0 +1,33 @@
/*
* Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.siyeh.ig.fixes.performance;
import com.siyeh.InspectionGadgetsBundle;
import com.siyeh.ig.IGQuickFixesTestCase;
import com.siyeh.ig.performance.CallToSimpleSetterInClassInspection;
import com.siyeh.ig.performance.TrivialStringConcatenationInspection;
public class InlineCallFixTest extends IGQuickFixesTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
myFixture.enableInspections(new CallToSimpleSetterInClassInspection());
myRelativePath = "performance/simple_setter";
}
public void testParentheses() { doTest(InspectionGadgetsBundle.message("call.to.simple.setter.in.class.inline.quickfix")); }
}