JavaPushDownDelegate#inlineSuperCall: prevent NPE when super method has no body (EA-208780)

GitOrigin-RevId: 6387fb8b498fb3a57e0dba0dd1540d1b25239623
This commit is contained in:
Tagir Valeev
2019-07-17 06:44:07 +03:00
committed by intellij-monorepo-bot
parent 06438cb76b
commit 38307a37c9
5 changed files with 22 additions and 2 deletions
@@ -360,8 +360,11 @@ public class JavaPushDownDelegate extends PushDownDelegate<MemberInfo, PsiMember
PsiElement element = reference.getElement();
if (element instanceof PsiReferenceExpression) {
PsiReferenceExpression referenceExpression = (PsiReferenceExpression)element;
new InlineMethodProcessor(element.getProject(), superMethod, referenceExpression, null, true)
.inlineMethodCall(referenceExpression);
if (superMethod.getBody() != null) {
// No super method body: either native method or compilation error
new InlineMethodProcessor(element.getProject(), superMethod, referenceExpression, null, true)
.inlineMethodCall(referenceExpression);
}
}
}
}
@@ -0,0 +1,6 @@
class Test {
void foo() {
super.foo();
}
}
@@ -0,0 +1,4 @@
class Super {
native void foo();
}
@@ -0,0 +1,6 @@
class Test extends Super {
void foo() {
super.foo();
}
}
@@ -76,6 +76,7 @@ public class InlineSuperClassTest extends LightMultiFileTestCase {
}
public void testThisQualificationInsideAnonymous() { doTest(); }
public void testOrderOfInnerClasses() { doTest(); }
public void testSuperMethodWithoutBody() { doTest(); }
private void doTest() {
doTest(false, false);