mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Inline method: use StatementExtractor when removing unused parameters
IDEA-215429 Inline method with unused parameter causes uncompilable or unintended code GitOrigin-RevId: d701c4a49b64202144c4d5ba80047d8f846f1767
This commit is contained in:
committed by
intellij-monorepo-bot
parent
f1afe2cc56
commit
2ad37d8194
@@ -33,6 +33,7 @@ import com.intellij.psi.search.LocalSearchScope;
|
||||
import com.intellij.psi.search.searches.OverridingMethodsSearch;
|
||||
import com.intellij.psi.search.searches.ReferencesSearch;
|
||||
import com.intellij.psi.util.*;
|
||||
import com.intellij.psi.util.InheritanceUtil;
|
||||
import com.intellij.refactoring.BaseRefactoringProcessor;
|
||||
import com.intellij.refactoring.RefactoringBundle;
|
||||
import com.intellij.refactoring.introduceParameter.Util;
|
||||
@@ -47,10 +48,7 @@ import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.JavaPsiConstructorUtil;
|
||||
import com.intellij.util.ObjectUtils;
|
||||
import com.intellij.util.containers.MultiMap;
|
||||
import com.siyeh.ig.psiutils.CommentTracker;
|
||||
import com.siyeh.ig.psiutils.ExpressionUtils;
|
||||
import com.siyeh.ig.psiutils.SideEffectChecker;
|
||||
import com.siyeh.ig.psiutils.VariableAccessUtils;
|
||||
import com.siyeh.ig.psiutils.*;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -989,12 +987,14 @@ public class InlineMethodProcessor extends BaseRefactoringProcessor {
|
||||
|
||||
PsiExpression initializer = variable.getInitializer();
|
||||
if (firstRef == null) {
|
||||
if (initializer != null && SideEffectChecker.mayHaveSideEffects(initializer)) {
|
||||
RemoveUnusedVariableUtil.replaceElementWithExpression(initializer, PsiElementFactory.getInstance(myProject), variable);
|
||||
}
|
||||
else {
|
||||
variable.getParent().delete();
|
||||
PsiDeclarationStatement declaration = (PsiDeclarationStatement)variable.getParent();
|
||||
if (initializer != null) {
|
||||
List<PsiExpression> sideEffects = SideEffectChecker.extractSideEffectExpressions(initializer);
|
||||
for (PsiStatement statement : StatementExtractor.generateStatements(sideEffects, initializer)) {
|
||||
declaration.getParent().addBefore(statement, declaration);
|
||||
}
|
||||
}
|
||||
declaration.delete();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.Map;
|
||||
|
||||
class Temp {
|
||||
public Object foo(Set<String> bar) {
|
||||
if (bar.size() < 2)
|
||||
return <caret>abortWithCorruptDataError("" + bar.size()); // Inline this
|
||||
|
||||
return bar;
|
||||
}
|
||||
|
||||
public static Map<String, Object> abortWithCorruptDataError(Object message) { // or online this
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
class Temp {
|
||||
public Object foo(Set<String> bar) {
|
||||
if (bar.size() < 2) {
|
||||
// Inline this
|
||||
bar.size(); // or online this
|
||||
return null;
|
||||
}
|
||||
|
||||
return bar;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -526,6 +526,10 @@ public class InlineMethodTest extends LightRefactoringTestCase {
|
||||
public void testInvertMethod() {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testUnusedParameter() {
|
||||
doTest();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Sdk getProjectJDK() {
|
||||
|
||||
Reference in New Issue
Block a user