From 16f4b4c8837e5903a9882bda8cea6b94807104e1 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Mon, 18 Apr 2016 12:34:57 +0200 Subject: [PATCH] convert to instance/move instance: support default methods in interfaces for java 8 (IDEA-154833) --- .../ConvertToInstanceMethodProcessor.java | 17 +++++---- .../MoveInstanceMethodDialogBase.java | 4 +- .../MoveInstanceMethodProcessor.java | 14 ++++++- .../refactoring/util/RefactoringUtil.java | 2 + .../ConflictingParameterName.java | 15 ++++++++ .../ConflictingParameterName.java.after | 15 ++++++++ .../convertToInstance8Method/Interface.java | 22 +++++++++++ .../Interface.java.after | 22 +++++++++++ .../convertToInstance8Method/Interface2.java | 16 ++++++++ .../Interface2.java.after | 16 ++++++++ .../convertToInstance8Method/Interface3.java | 37 +++++++++++++++++++ .../Interface3.java.after | 37 +++++++++++++++++++ .../InterfacePrivate.java | 22 +++++++++++ .../InterfacePrivate.java.after | 22 +++++++++++ .../InterfaceTypeParameter.java | 13 +++++++ .../InterfaceTypeParameter.java.after | 14 +++++++ .../JavadocParameter.java | 10 +++++ .../JavadocParameter.java.after | 10 +++++ .../convertToInstance8Method/Simple.java | 16 ++++++++ .../Simple.java.after | 17 +++++++++ .../TypeParameter.java | 7 ++++ .../TypeParameter.java.after | 8 ++++ .../VisibilityConflict.java | 11 ++++++ .../moveInstanceMethod/Interface.java.after | 8 ++-- .../ConvertToInstance8MethodTest.java | 30 +++++++++++++++ .../ConvertToInstanceMethodTest.java | 12 +++++- 26 files changed, 400 insertions(+), 17 deletions(-) create mode 100644 java/java-tests/testData/refactoring/convertToInstance8Method/ConflictingParameterName.java create mode 100644 java/java-tests/testData/refactoring/convertToInstance8Method/ConflictingParameterName.java.after create mode 100644 java/java-tests/testData/refactoring/convertToInstance8Method/Interface.java create mode 100644 java/java-tests/testData/refactoring/convertToInstance8Method/Interface.java.after create mode 100644 java/java-tests/testData/refactoring/convertToInstance8Method/Interface2.java create mode 100644 java/java-tests/testData/refactoring/convertToInstance8Method/Interface2.java.after create mode 100644 java/java-tests/testData/refactoring/convertToInstance8Method/Interface3.java create mode 100644 java/java-tests/testData/refactoring/convertToInstance8Method/Interface3.java.after create mode 100644 java/java-tests/testData/refactoring/convertToInstance8Method/InterfacePrivate.java create mode 100644 java/java-tests/testData/refactoring/convertToInstance8Method/InterfacePrivate.java.after create mode 100644 java/java-tests/testData/refactoring/convertToInstance8Method/InterfaceTypeParameter.java create mode 100644 java/java-tests/testData/refactoring/convertToInstance8Method/InterfaceTypeParameter.java.after create mode 100644 java/java-tests/testData/refactoring/convertToInstance8Method/JavadocParameter.java create mode 100644 java/java-tests/testData/refactoring/convertToInstance8Method/JavadocParameter.java.after create mode 100644 java/java-tests/testData/refactoring/convertToInstance8Method/Simple.java create mode 100644 java/java-tests/testData/refactoring/convertToInstance8Method/Simple.java.after create mode 100644 java/java-tests/testData/refactoring/convertToInstance8Method/TypeParameter.java create mode 100644 java/java-tests/testData/refactoring/convertToInstance8Method/TypeParameter.java.after create mode 100644 java/java-tests/testData/refactoring/convertToInstance8Method/VisibilityConflict.java create mode 100644 java/java-tests/testSrc/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstance8MethodTest.java diff --git a/java/java-impl/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodProcessor.java b/java/java-impl/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodProcessor.java index bea335dbc17c..d91841929dbb 100644 --- a/java/java-impl/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodProcessor.java @@ -237,17 +237,20 @@ public class ConvertToInstanceMethodProcessor extends BaseRefactoringProcessor { else { final PsiMethod interfaceMethod = addMethodToClass(myTargetClass); final PsiModifierList modifierList = interfaceMethod.getModifierList(); - modifierList.setModifierProperty(PsiModifier.PRIVATE, false); - modifierList.setModifierProperty(PsiModifier.PUBLIC, false); - modifierList.setModifierProperty(PsiModifier.PROTECTED, false); + final boolean markAsDefault = PsiUtil.isLanguageLevel8OrHigher(myTargetClass); + if (markAsDefault) { + modifierList.setModifierProperty(PsiModifier.DEFAULT, true); + } RefactoringUtil.makeMethodAbstract(myTargetClass, interfaceMethod); EditorHelper.openInEditor(interfaceMethod); - for (final PsiClass psiClass : inheritors) { - final PsiMethod newMethod = addMethodToClass(psiClass); - PsiUtil.setModifierProperty(newMethod, myNewVisibility != null && !myNewVisibility.equals(VisibilityUtil.ESCALATE_VISIBILITY) ? myNewVisibility - : PsiModifier.PUBLIC, true); + if (!markAsDefault) { + for (final PsiClass psiClass : inheritors) { + final PsiMethod newMethod = addMethodToClass(psiClass); + PsiUtil.setModifierProperty(newMethod, myNewVisibility != null && !myNewVisibility.equals(VisibilityUtil.ESCALATE_VISIBILITY) ? myNewVisibility + : PsiModifier.PUBLIC, true); + } } } myMethod.delete(); diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodDialogBase.java b/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodDialogBase.java index a02fceb859d2..945b87c8bcb3 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodDialogBase.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodDialogBase.java @@ -24,10 +24,10 @@ import com.intellij.psi.PsiSubstitutor; import com.intellij.psi.PsiVariable; import com.intellij.psi.search.searches.ClassInheritorsSearch; import com.intellij.psi.util.PsiFormatUtil; +import com.intellij.psi.util.PsiUtil; import com.intellij.refactoring.RefactoringBundle; import com.intellij.refactoring.move.MoveDialogBase; import com.intellij.refactoring.ui.JavaVisibilityPanel; -import com.intellij.refactoring.ui.RefactoringDialog; import com.intellij.ui.ScrollPaneFactory; import com.intellij.ui.components.JBList; @@ -107,7 +107,7 @@ public abstract class MoveInstanceMethodDialogBase extends MoveDialogBase { } protected boolean verifyTargetClass (PsiClass targetClass) { - if (targetClass.isInterface()) { + if (targetClass.isInterface() && !PsiUtil.isLanguageLevel8OrHigher(targetClass)) { final Project project = getProject(); if (ClassInheritorsSearch.search(targetClass, false).findFirst() == null) { final String message = RefactoringBundle.message("0.is.an.interface.that.has.no.implementing.classes", DescriptiveNameUtil diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodProcessor.java b/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodProcessor.java index acaa6762cdee..cf4bdba86dc9 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodProcessor.java @@ -168,7 +168,7 @@ public class MoveInstanceMethodProcessor extends BaseRefactoringProcessor{ } } - if (myTargetClass.isInterface()) { + if (myTargetClass.isInterface() && !PsiUtil.isLanguageLevel8OrHigher(myTargetClass)) { addInheritorUsages(myTargetClass, searchScope, usages); } @@ -251,7 +251,17 @@ public class MoveInstanceMethodProcessor extends BaseRefactoringProcessor{ } try { - if (myTargetClass.isInterface()) patternMethod.getBody().delete(); + if (myTargetClass.isInterface()) { + final PsiModifierList modifierList = patternMethod.getModifierList(); + if (!PsiUtil.isLanguageLevel8OrHigher(myTargetClass)) { + patternMethod.getBody().delete(); + modifierList.setModifierProperty(PsiModifier.DEFAULT, false); + } + else { + modifierList.setModifierProperty(PsiModifier.DEFAULT, true); + } + RefactoringUtil.makeMethodAbstract(myTargetClass, patternMethod); + } final PsiMethod method = addMethodToClass(myTargetClass, patternMethod, false); myMethod.delete(); diff --git a/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java b/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java index f9d723d81e97..8f48d192d81f 100644 --- a/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java +++ b/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java @@ -727,6 +727,8 @@ public class RefactoringUtil { private static void prepareForInterface(PsiMethod method) { PsiUtil.setModifierProperty(method, PsiModifier.PUBLIC, false); + PsiUtil.setModifierProperty(method, PsiModifier.PRIVATE, false); + PsiUtil.setModifierProperty(method, PsiModifier.PROTECTED, false); prepareForAbstract(method); } diff --git a/java/java-tests/testData/refactoring/convertToInstance8Method/ConflictingParameterName.java b/java/java-tests/testData/refactoring/convertToInstance8Method/ConflictingParameterName.java new file mode 100644 index 000000000000..08b546c1c8ab --- /dev/null +++ b/java/java-tests/testData/refactoring/convertToInstance8Method/ConflictingParameterName.java @@ -0,0 +1,15 @@ +class Foo { + + public String bar; + private String baz; + + public static void setBar(Foo foo, String bar) { + foo.bar = bar; + foo.baz = bar; + foo.bar(); + } + + private void bar() { + + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/convertToInstance8Method/ConflictingParameterName.java.after b/java/java-tests/testData/refactoring/convertToInstance8Method/ConflictingParameterName.java.after new file mode 100644 index 000000000000..6ff17b77e378 --- /dev/null +++ b/java/java-tests/testData/refactoring/convertToInstance8Method/ConflictingParameterName.java.after @@ -0,0 +1,15 @@ +class Foo { + + public String bar; + private String baz; + + public void setBar(String bar) { + this.bar = bar; + baz = bar; + bar(); + } + + private void bar() { + + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/convertToInstance8Method/Interface.java b/java/java-tests/testData/refactoring/convertToInstance8Method/Interface.java new file mode 100644 index 000000000000..07f45aeefa07 --- /dev/null +++ b/java/java-tests/testData/refactoring/convertToInstance8Method/Interface.java @@ -0,0 +1,22 @@ +interface I { +} + +interface J extends I { +} + +class IImpl implements I { +} + +class JImpl implements J { +} + +class X { + static void method(int i, I intf) { + System.out.println("i = " + i + ", intf = " + intf); + } + + { + J j = new JImpl(); + method(0, j); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/convertToInstance8Method/Interface.java.after b/java/java-tests/testData/refactoring/convertToInstance8Method/Interface.java.after new file mode 100644 index 000000000000..f8f3eb42a9af --- /dev/null +++ b/java/java-tests/testData/refactoring/convertToInstance8Method/Interface.java.after @@ -0,0 +1,22 @@ +interface I { + default void method(int i) { + System.out.println("i = " + i + ", intf = " + this); + } +} + +interface J extends I { +} + +class IImpl implements I { +} + +class JImpl implements J { +} + +class X { + + { + J j = new JImpl(); + j.method(0); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/convertToInstance8Method/Interface2.java b/java/java-tests/testData/refactoring/convertToInstance8Method/Interface2.java new file mode 100644 index 000000000000..1915b88b312b --- /dev/null +++ b/java/java-tests/testData/refactoring/convertToInstance8Method/Interface2.java @@ -0,0 +1,16 @@ +interface I { +} + +class C implements I { +} + +interface J extends I { +} + +class D extends C implements J { +} + +class X { + static void m(I i) { + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/convertToInstance8Method/Interface2.java.after b/java/java-tests/testData/refactoring/convertToInstance8Method/Interface2.java.after new file mode 100644 index 000000000000..d30886833416 --- /dev/null +++ b/java/java-tests/testData/refactoring/convertToInstance8Method/Interface2.java.after @@ -0,0 +1,16 @@ +interface I { + default void m() { + } +} + +class C implements I { +} + +interface J extends I { +} + +class D extends C implements J { +} + +class X { +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/convertToInstance8Method/Interface3.java b/java/java-tests/testData/refactoring/convertToInstance8Method/Interface3.java new file mode 100644 index 000000000000..88d7a328ef34 --- /dev/null +++ b/java/java-tests/testData/refactoring/convertToInstance8Method/Interface3.java @@ -0,0 +1,37 @@ +interface PsiAntElement { +} + +interface AntElement extends PsiAntElement { +} + +class AntElementImpl implements AntElement { +} + +interface AntNameIdentifier extends AntElement { +} + +class AntNameIdentifierImpl extends AntElementImpl implements AntNameIdentifier { +} + +interface AntStructuredElement extends AntElement { +} + +class AntStructuredElementImpl extends AntElementImpl implements AntStructuredElement { +} + +interface AntTask extends AntStructuredElement { +} + +class AntTaskImpl extends AntStructuredElementImpl implements AntTask { +} + +interface AntMacroDef extends AntTask { +} + +class AntMacroDefImpl extends AntTaskImpl implements AntMacroDef { +} + +class X { + static void m(PsiAntElement i) { + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/convertToInstance8Method/Interface3.java.after b/java/java-tests/testData/refactoring/convertToInstance8Method/Interface3.java.after new file mode 100644 index 000000000000..fe84c95d017f --- /dev/null +++ b/java/java-tests/testData/refactoring/convertToInstance8Method/Interface3.java.after @@ -0,0 +1,37 @@ +interface PsiAntElement { + default void m() { + } +} + +interface AntElement extends PsiAntElement { +} + +class AntElementImpl implements AntElement { +} + +interface AntNameIdentifier extends AntElement { +} + +class AntNameIdentifierImpl extends AntElementImpl implements AntNameIdentifier { +} + +interface AntStructuredElement extends AntElement { +} + +class AntStructuredElementImpl extends AntElementImpl implements AntStructuredElement { +} + +interface AntTask extends AntStructuredElement { +} + +class AntTaskImpl extends AntStructuredElementImpl implements AntTask { +} + +interface AntMacroDef extends AntTask { +} + +class AntMacroDefImpl extends AntTaskImpl implements AntMacroDef { +} + +class X { +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/convertToInstance8Method/InterfacePrivate.java b/java/java-tests/testData/refactoring/convertToInstance8Method/InterfacePrivate.java new file mode 100644 index 000000000000..6c247f62a43c --- /dev/null +++ b/java/java-tests/testData/refactoring/convertToInstance8Method/InterfacePrivate.java @@ -0,0 +1,22 @@ +interface I { +} + +interface J extends I { +} + +class IImpl implements I { +} + +class JImpl implements J { +} + +class X { + private static void method(int i, I intf) { + System.out.println("i = " + i + ", intf = " + intf); + } + + { + J j = new JImpl(); + method(0, j); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/convertToInstance8Method/InterfacePrivate.java.after b/java/java-tests/testData/refactoring/convertToInstance8Method/InterfacePrivate.java.after new file mode 100644 index 000000000000..f8f3eb42a9af --- /dev/null +++ b/java/java-tests/testData/refactoring/convertToInstance8Method/InterfacePrivate.java.after @@ -0,0 +1,22 @@ +interface I { + default void method(int i) { + System.out.println("i = " + i + ", intf = " + this); + } +} + +interface J extends I { +} + +class IImpl implements I { +} + +class JImpl implements J { +} + +class X { + + { + J j = new JImpl(); + j.method(0); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/convertToInstance8Method/InterfaceTypeParameter.java b/java/java-tests/testData/refactoring/convertToInstance8Method/InterfaceTypeParameter.java new file mode 100644 index 000000000000..c22af57f90af --- /dev/null +++ b/java/java-tests/testData/refactoring/convertToInstance8Method/InterfaceTypeParameter.java @@ -0,0 +1,13 @@ +interface Intf { + T get(); +} + +class Impl implements Intf { +} + +class X { + static X method(Intf p, U value) { + U v = p.get(); + return new X(v,value); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/convertToInstance8Method/InterfaceTypeParameter.java.after b/java/java-tests/testData/refactoring/convertToInstance8Method/InterfaceTypeParameter.java.after new file mode 100644 index 000000000000..ccee4f1689bf --- /dev/null +++ b/java/java-tests/testData/refactoring/convertToInstance8Method/InterfaceTypeParameter.java.after @@ -0,0 +1,14 @@ +interface Intf { + default X method(T value) { + T v = get(); + return new X(v,value); + } + + T get(); +} + +class Impl implements Intf { +} + +class X { +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/convertToInstance8Method/JavadocParameter.java b/java/java-tests/testData/refactoring/convertToInstance8Method/JavadocParameter.java new file mode 100644 index 000000000000..413e75678055 --- /dev/null +++ b/java/java-tests/testData/refactoring/convertToInstance8Method/JavadocParameter.java @@ -0,0 +1,10 @@ +class Test { + /** + * method description + * @param a description + */ + public static void main(A a) { + } +} + +class A {} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/convertToInstance8Method/JavadocParameter.java.after b/java/java-tests/testData/refactoring/convertToInstance8Method/JavadocParameter.java.after new file mode 100644 index 000000000000..34491fac484f --- /dev/null +++ b/java/java-tests/testData/refactoring/convertToInstance8Method/JavadocParameter.java.after @@ -0,0 +1,10 @@ +class Test { +} + +class A { + /** + * method description + */ + public void main() { + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/convertToInstance8Method/Simple.java b/java/java-tests/testData/refactoring/convertToInstance8Method/Simple.java new file mode 100644 index 000000000000..f038672a0c2e --- /dev/null +++ b/java/java-tests/testData/refactoring/convertToInstance8Method/Simple.java @@ -0,0 +1,16 @@ +public class Y { + public void foo() { + } +} +public class X { + static void method(Y y) { + System.out.println(y); + y.foo(); + } + + { + Y y = new Y(); + method(y); + method(new Y()); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/convertToInstance8Method/Simple.java.after b/java/java-tests/testData/refactoring/convertToInstance8Method/Simple.java.after new file mode 100644 index 000000000000..69449ae2ce76 --- /dev/null +++ b/java/java-tests/testData/refactoring/convertToInstance8Method/Simple.java.after @@ -0,0 +1,17 @@ +public class Y { + void method() { + System.out.println(this); + foo(); + } + + public void foo() { + } +} +public class X { + + { + Y y = new Y(); + y.method(); + new Y().method(); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/convertToInstance8Method/TypeParameter.java b/java/java-tests/testData/refactoring/convertToInstance8Method/TypeParameter.java new file mode 100644 index 000000000000..945f09e77397 --- /dev/null +++ b/java/java-tests/testData/refactoring/convertToInstance8Method/TypeParameter.java @@ -0,0 +1,7 @@ +class C { + T get() { return null; } + static void method(C c, V value, X x) { + V v = c.get(); + System.out.println(v + " " + value); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/convertToInstance8Method/TypeParameter.java.after b/java/java-tests/testData/refactoring/convertToInstance8Method/TypeParameter.java.after new file mode 100644 index 000000000000..b7338e2a7d71 --- /dev/null +++ b/java/java-tests/testData/refactoring/convertToInstance8Method/TypeParameter.java.after @@ -0,0 +1,8 @@ +class C { + void method(T value, X x) { + T v = get(); + System.out.println(v + " " + value); + } + + T get() { return null; } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/convertToInstance8Method/VisibilityConflict.java b/java/java-tests/testData/refactoring/convertToInstance8Method/VisibilityConflict.java new file mode 100644 index 000000000000..97e99491b2ff --- /dev/null +++ b/java/java-tests/testData/refactoring/convertToInstance8Method/VisibilityConflict.java @@ -0,0 +1,11 @@ +class Test { + { + foo(new Bar()); + } + private static void foo(Bar b){} + +} + +class Bar { + +} diff --git a/java/java-tests/testData/refactoring/moveInstanceMethod/Interface.java.after b/java/java-tests/testData/refactoring/moveInstanceMethod/Interface.java.after index 265142a029bb..65444c0f7d54 100644 --- a/java/java-tests/testData/refactoring/moveInstanceMethod/Interface.java.after +++ b/java/java-tests/testData/refactoring/moveInstanceMethod/Interface.java.after @@ -1,12 +1,10 @@ interface Foreign { - void foo(Test1 test1); + default void foo(Test1 test1) { + test1.field++; + } } class ForeignImpl implements Foreign { - @Override - public void foo(Test1 test1) { - test1.field++; - } } diff --git a/java/java-tests/testSrc/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstance8MethodTest.java b/java/java-tests/testSrc/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstance8MethodTest.java new file mode 100644 index 000000000000..745be3a6476f --- /dev/null +++ b/java/java-tests/testSrc/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstance8MethodTest.java @@ -0,0 +1,30 @@ +/* + * Copyright 2000-2016 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.refactoring.convertToInstanceMethod; + +import com.intellij.pom.java.LanguageLevel; + +public class ConvertToInstance8MethodTest extends ConvertToInstanceMethodTest { + @Override + protected String getBasePath() { + return "/refactoring/convertToInstance8Method/"; + } + + @Override + protected LanguageLevel getLanguageLevel() { + return LanguageLevel.JDK_1_8; + } +} diff --git a/java/java-tests/testSrc/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodTest.java b/java/java-tests/testSrc/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodTest.java index 06aa5d47e129..300ddadee60c 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodTest.java @@ -2,6 +2,7 @@ package com.intellij.refactoring.convertToInstanceMethod; import com.intellij.JavaTestUtil; import com.intellij.codeInsight.TargetElementUtil; +import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiMethod; import com.intellij.psi.PsiModifier; @@ -55,7 +56,7 @@ public class ConvertToInstanceMethodTest extends LightRefactoringTestCase { } private void doTest(final int targetParameter, final String visibility) throws Exception { - final String filePath = "/refactoring/convertToInstanceMethod/" + getTestName(false) + ".java"; + final String filePath = getBasePath() + getTestName(false) + ".java"; configureByFile(filePath); final PsiElement targetElement = TargetElementUtil.findTargetElement(getEditor(), TargetElementUtil.ELEMENT_NAME_ACCEPTED); assertTrue(" is not on method name", targetElement instanceof PsiMethod); @@ -66,4 +67,13 @@ public class ConvertToInstanceMethodTest extends LightRefactoringTestCase { checkResultByFile(filePath + ".after"); } + + protected String getBasePath() { + return "/refactoring/convertToInstanceMethod/"; + } + + @Override + protected LanguageLevel getLanguageLevel() { + return LanguageLevel.JDK_1_6; + } }