make class static on unresolved 'static' method reference (IDEA-157364)

This commit is contained in:
Anna Kozlova
2016-06-20 10:29:14 +03:00
parent d2417e5ac0
commit 81f3f9b17e
3 changed files with 33 additions and 0 deletions
@@ -719,6 +719,17 @@ public class HighlightMethodUtil {
PsiExpressionList list,
PsiResolveHelper resolveHelper) {
TextRange fixRange = getFixRange(methodCall);
final PsiExpression qualifierExpression = methodCall.getMethodExpression().getQualifierExpression();
if (qualifierExpression instanceof PsiReferenceExpression) {
final PsiElement resolve = ((PsiReferenceExpression)qualifierExpression).resolve();
if (resolve instanceof PsiClass &&
((PsiClass)resolve).getContainingClass() != null &&
!((PsiClass)resolve).hasModifierProperty(PsiModifier.STATIC)) {
QuickFixAction.registerQuickFixAction(highlightInfo,
QUICK_FIX_FACTORY.createModifierListFix((PsiClass)resolve, PsiModifier.STATIC, true, false));
}
}
QuickFixAction.registerQuickFixAction(highlightInfo, fixRange, QUICK_FIX_FACTORY.createCreateMethodFromUsageFix(methodCall));
QuickFixAction.registerQuickFixAction(highlightInfo, fixRange, QUICK_FIX_FACTORY.createCreateAbstractMethodFromUsageFix(methodCall));
QuickFixAction.registerQuickFixAction(highlightInfo, fixRange, QUICK_FIX_FACTORY.createCreateConstructorFromSuperFix(methodCall));
@@ -0,0 +1,11 @@
// "Make 'C2' static" "true"
class C {
{
C2.staticMethod();
}
public static class C2 {
}
}
@@ -0,0 +1,11 @@
// "Make 'C2' static" "true"
class C {
{
C2.stati<caret>cMethod();
}
public class C2 {
}
}