diff --git a/java/java-impl/src/com/intellij/refactoring/memberPullUp/JavaPullUpHelper.java b/java/java-impl/src/com/intellij/refactoring/memberPullUp/JavaPullUpHelper.java index 922daaaa21df..1d83f2ffcc3c 100644 --- a/java/java-impl/src/com/intellij/refactoring/memberPullUp/JavaPullUpHelper.java +++ b/java/java-impl/src/com/intellij/refactoring/memberPullUp/JavaPullUpHelper.java @@ -328,6 +328,9 @@ public class JavaPullUpHelper implements PullUpHelper { if (qualifierExpression instanceof PsiReferenceExpression && ((PsiReferenceExpression)qualifierExpression).resolve() == mySourceClass) { ((PsiReferenceExpression)qualifierExpression).bindToElement(myTargetSuperClass); } + else if (qualifierExpression == null && myTargetSuperClass.isInterface()) { + ((PsiReferenceExpression)element).setQualifierExpression(JavaPsiFacade.getElementFactory(myProject).createReferenceExpression(myTargetSuperClass)); + } } } diff --git a/java/java-tests/testData/refactoring/pullUp/UpdateStaticRefs.java b/java/java-tests/testData/refactoring/pullUp/UpdateStaticRefs.java index 0d15177511f9..8507d7015950 100644 --- a/java/java-tests/testData/refactoring/pullUp/UpdateStaticRefs.java +++ b/java/java-tests/testData/refactoring/pullUp/UpdateStaticRefs.java @@ -1,5 +1,9 @@ class Foo {} class FooImpl extends Foo { + { + foo(); + } + public static void foo(){} } diff --git a/java/java-tests/testData/refactoring/pullUp/UpdateStaticRefsForInterface.java b/java/java-tests/testData/refactoring/pullUp/UpdateStaticRefsForInterface.java new file mode 100644 index 000000000000..4719231de8d3 --- /dev/null +++ b/java/java-tests/testData/refactoring/pullUp/UpdateStaticRefsForInterface.java @@ -0,0 +1,14 @@ +interface Foo {} +class FooImpl implements Foo { + { + foo(); + } + + public static void foo(){} + +} +class U { + public static void main(String[] args) { + FooImpl.foo(); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/pullUp/UpdateStaticRefsForInterface_after.java b/java/java-tests/testData/refactoring/pullUp/UpdateStaticRefsForInterface_after.java new file mode 100644 index 000000000000..6d4b59774e42 --- /dev/null +++ b/java/java-tests/testData/refactoring/pullUp/UpdateStaticRefsForInterface_after.java @@ -0,0 +1,14 @@ +interface Foo { + static void foo(){} +} +class FooImpl implements Foo { + { + Foo.foo(); + } + +} +class U { + public static void main(String[] args) { + Foo.foo(); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/pullUp/UpdateStaticRefs_after.java b/java/java-tests/testData/refactoring/pullUp/UpdateStaticRefs_after.java index a267d992bde3..0684dae8731e 100644 --- a/java/java-tests/testData/refactoring/pullUp/UpdateStaticRefs_after.java +++ b/java/java-tests/testData/refactoring/pullUp/UpdateStaticRefs_after.java @@ -2,6 +2,9 @@ class Foo { public static void foo(){} } class FooImpl extends Foo { + { + foo(); + } } class U { diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/PullUpTest.java b/java/java-tests/testSrc/com/intellij/java/refactoring/PullUpTest.java index 919164a33cc4..95263e6c3cb2 100644 --- a/java/java-tests/testSrc/com/intellij/java/refactoring/PullUpTest.java +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/PullUpTest.java @@ -141,6 +141,10 @@ public class PullUpTest extends LightRefactoringTestCase { doTest(false, new RefactoringTestUtil.MemberDescriptor("foo", PsiMethod.class)); } + public void testUpdateStaticRefsForInterface() { + doTest(false, new RefactoringTestUtil.MemberDescriptor("foo", PsiMethod.class)); + } + public void testRemoveOverrideFromPulledMethod() { doTest(false, new RefactoringTestUtil.MemberDescriptor("foo", PsiMethod.class)); }