check methods moved to interface as default (IDEA-151809)

This commit is contained in:
Anna Kozlova
2016-02-19 20:30:26 +01:00
parent 8b16402ca3
commit e1f2670f5a
3 changed files with 15 additions and 2 deletions
@@ -85,7 +85,7 @@ public class PullUpConflictsUtil {
for (MemberInfoBase<? extends PsiMember> info : infos) {
PsiMember member = info.getMember();
if (member instanceof PsiMethod) {
if (!info.isToAbstract() && !isInterfaceTarget) {
if (!info.isToAbstract()) {
movedMembers.add(member);
}
else {
@@ -0,0 +1,9 @@
interface IPlanet {}
class SimplePlanet implements IPlanet {
double mass;
private double ma<caret>ss() {
return mass;
}
}
@@ -25,7 +25,6 @@ import com.intellij.refactoring.listeners.MoveMemberListener;
import com.intellij.refactoring.memberPullUp.PullUpConflictsUtil;
import com.intellij.refactoring.memberPullUp.PullUpProcessor;
import com.intellij.refactoring.util.DocCommentPolicy;
import com.intellij.refactoring.util.classMembers.InterfaceContainmentVerifier;
import com.intellij.refactoring.util.classMembers.MemberInfo;
import com.intellij.testFramework.IdeaTestUtil;
import com.intellij.util.containers.MultiMap;
@@ -100,6 +99,11 @@ public class PullUpTest extends LightRefactoringTestCase {
doTest(true, "Functional expression demands functional interface to have exact one method", new RefactoringTestUtil.MemberDescriptor("get", PsiMethod.class, true));
}
public void testPullToInterfaceAsDefault() throws Exception {
setLanguageLevel(LanguageLevel.JDK_1_8);
doTest(true, "Method <b><code>mass()</code></b> uses field <b><code>SimplePlanet.mass</code></b>, which is not moved to the superclass", new RefactoringTestUtil.MemberDescriptor("mass", PsiMethod.class, false));
}
public void testStillFunctional() {
setLanguageLevel(LanguageLevel.JDK_1_8);
doTest(true, new RefactoringTestUtil.MemberDescriptor("get", PsiMethod.class, false));