mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[java-refactoring] Inline local: go specifically one level up when searching for PsiReferenceExpression
Otherwise, it's possible to find something unrelated, e.g., if you are inside the lambda Fixes IDEA-351780 Inline Local Variable inside lambda fails with error GitOrigin-RevId: 8f0378975da117dfbc7086a67dac6fa6c9533a67
This commit is contained in:
committed by
intellij-monorepo-bot
parent
5f8845c2b3
commit
e8b723c468
+5
-5
@@ -32,6 +32,7 @@ import com.intellij.refactoring.util.InlineUtil;
|
||||
import com.intellij.refactoring.util.RefactoringUtil;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.CommonJavaRefactoringUtil;
|
||||
import com.intellij.util.ObjectUtils;
|
||||
import com.intellij.util.PlatformUtils;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.siyeh.ig.PsiReplacementUtil;
|
||||
@@ -96,11 +97,10 @@ public final class InlineLocalHandler extends JavaInlineActionHandler {
|
||||
}
|
||||
|
||||
private static @NotNull ModCommand perform(ActionContext context) {
|
||||
PsiElement element = context.findLeaf();
|
||||
if (!(element instanceof PsiIdentifier)) {
|
||||
element = context.findLeafOnTheLeft();
|
||||
}
|
||||
final PsiReferenceExpression refExpr = PsiTreeUtil.getParentOfType(element, PsiReferenceExpression.class);
|
||||
PsiElement parent = context.findLeaf() instanceof PsiIdentifier id ? id.getParent() :
|
||||
context.findLeafOnTheLeft() instanceof PsiIdentifier id ? id.getParent() :
|
||||
null;
|
||||
final PsiReferenceExpression refExpr = ObjectUtils.tryCast(parent, PsiReferenceExpression.class);
|
||||
InlineMode mode;
|
||||
if (refExpr != null && PlatformUtils.isFleetBackend() && JavaRefactoringSettings.getInstance().INLINE_LOCAL_THIS) {
|
||||
// Conflicts mode is handled separately in Fleet, for now
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public final class InlineTest {
|
||||
public List<Object> foo(Collection<Object> bars, Predicate<String> filter) {
|
||||
return bars.stream().filter(bar -> {
|
||||
final String se<caret>archString = bar.toString();
|
||||
return filter.test(searchString);
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public final class InlineTest {
|
||||
public List<Object> foo(Collection<Object> bars, Predicate<String> filter) {
|
||||
return bars.stream().filter(bar -> {
|
||||
return filter.test(bar.toString());
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
@@ -381,6 +381,10 @@ public class InlineLocalTest extends LightJavaCodeInsightTestCase {
|
||||
JavaRefactoringSettings.getInstance().INLINE_LOCAL_THIS = initialSetting;
|
||||
}
|
||||
}
|
||||
|
||||
public void testInLambda() {
|
||||
doTest(LanguageLevel.JDK_1_8);
|
||||
}
|
||||
|
||||
private void doTest() {
|
||||
doTest(LanguageLevel.JDK_1_7);
|
||||
|
||||
Reference in New Issue
Block a user