mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-06 03:21:12 +07:00
inline method: avoid another cases where invalidated this expr is used
EA-103338 - PIEAE: PsiUtilCore.ensureValid
This commit is contained in:
@@ -19,9 +19,9 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.util.Key;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.InheritanceUtil;
|
||||
import com.intellij.psi.util.MethodSignatureUtil;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.refactoring.util.RefactoringChangeUtil;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -217,7 +217,8 @@ public class ChangeContextUtil {
|
||||
boolean needQualifier = true;
|
||||
PsiElement refElement = refExpr.resolve();
|
||||
if (refMember.equals(refElement) ||
|
||||
(refElement instanceof PsiMethod && refMember instanceof PsiMethod && ArrayUtil.find(((PsiMethod)refElement).findSuperMethods(), refMember) > -1)){
|
||||
(refElement instanceof PsiMethod && refMember instanceof PsiMethod &&
|
||||
MethodSignatureUtil.isSuperMethod((PsiMethod)refMember, (PsiMethod)refElement))) {
|
||||
if (thisAccessExpr instanceof PsiThisExpression && ((PsiThisExpression)thisAccessExpr).getQualifier() == null) {
|
||||
//Trivial qualifier
|
||||
needQualifier = false;
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
class A {
|
||||
void m() {
|
||||
class Local {}
|
||||
n();
|
||||
}
|
||||
void n() {}
|
||||
}
|
||||
|
||||
class B extends A {
|
||||
void n() {}
|
||||
}
|
||||
|
||||
class C extends B {
|
||||
{
|
||||
<caret>m();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
class A {
|
||||
void m() {
|
||||
class Local {}
|
||||
n();
|
||||
}
|
||||
void n() {}
|
||||
}
|
||||
|
||||
class B extends A {
|
||||
void n() {}
|
||||
}
|
||||
|
||||
class C extends B {
|
||||
{
|
||||
class Local {}
|
||||
n();
|
||||
}
|
||||
}
|
||||
@@ -367,6 +367,10 @@ public class InlineMethodTest extends LightRefactoringTestCase {
|
||||
doTestInlineThisOnly();
|
||||
}
|
||||
|
||||
public void testThisExpressionValidationForLocalClasses() throws Exception {
|
||||
doTestInlineThisOnly();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Sdk getProjectJDK() {
|
||||
return getTestName(false).contains("Src") ? IdeaTestUtil.getMockJdk17() : super.getProjectJDK();
|
||||
|
||||
Reference in New Issue
Block a user