diff --git a/java/java-tests/testData/refactoring/encapsulateFields/hideOuterclassMethod/after/Test.java b/java/java-tests/testData/refactoring/encapsulateFields/hideOuterclassMethod/after/Test.java new file mode 100644 index 000000000000..ad4b7f507b2e --- /dev/null +++ b/java/java-tests/testData/refactoring/encapsulateFields/hideOuterclassMethod/after/Test.java @@ -0,0 +1,17 @@ +public class A { + static int getI() { + return 23; + } + + static class B { + static private int i = 42; + + static int m() { + return getI(); + } + } + + public static void main(String[] args) { + System.out.println(B.m()); + } +} diff --git a/java/java-tests/testData/refactoring/encapsulateFields/hideOuterclassMethod/before/Test.java b/java/java-tests/testData/refactoring/encapsulateFields/hideOuterclassMethod/before/Test.java new file mode 100644 index 000000000000..ad4b7f507b2e --- /dev/null +++ b/java/java-tests/testData/refactoring/encapsulateFields/hideOuterclassMethod/before/Test.java @@ -0,0 +1,17 @@ +public class A { + static int getI() { + return 23; + } + + static class B { + static private int i = 42; + + static int m() { + return getI(); + } + } + + public static void main(String[] args) { + System.out.println(B.m()); + } +} diff --git a/java/java-tests/testData/refactoring/encapsulateFields/hideOverriderMethod/after/Test.java b/java/java-tests/testData/refactoring/encapsulateFields/hideOverriderMethod/after/Test.java new file mode 100644 index 000000000000..dd77e9b58a48 --- /dev/null +++ b/java/java-tests/testData/refactoring/encapsulateFields/hideOverriderMethod/after/Test.java @@ -0,0 +1,15 @@ +public class A { + public int i; +} + +class B extends A { + public int getI() { + return 42; + } + + public static void main(String[] args) { + A a = new B(); + a.i = 23; + System.out.println(a.i); + } +} diff --git a/java/java-tests/testData/refactoring/encapsulateFields/hideOverriderMethod/before/Test.java b/java/java-tests/testData/refactoring/encapsulateFields/hideOverriderMethod/before/Test.java new file mode 100644 index 000000000000..dd77e9b58a48 --- /dev/null +++ b/java/java-tests/testData/refactoring/encapsulateFields/hideOverriderMethod/before/Test.java @@ -0,0 +1,15 @@ +public class A { + public int i; +} + +class B extends A { + public int getI() { + return 42; + } + + public static void main(String[] args) { + A a = new B(); + a.i = 23; + System.out.println(a.i); + } +} diff --git a/java/java-tests/testSrc/com/intellij/refactoring/EncapsulateFieldsTest.java b/java/java-tests/testSrc/com/intellij/refactoring/EncapsulateFieldsTest.java index 0d95dc67e9e3..387d7bb188d4 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/EncapsulateFieldsTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/EncapsulateFieldsTest.java @@ -30,6 +30,14 @@ public class EncapsulateFieldsTest extends MultiFileTestCase{ doTest("i", "There already is a method Super setI(int) which differs from setter setI by return type only."); } + public void testHideOverriderMethod() throws Exception { + doTest("i", "A", "There is already a method B.getI() which would hide generated getter for a.i"); + } + + public void testHideOuterclassMethod() throws Exception { + doTest("i", "A.B", "There is already a method A.getI() which would be hidden by generated getter"); + } + @Override protected String getTestDataPath() { return JavaTestUtil.getJavaTestDataPath(); @@ -41,11 +49,15 @@ public class EncapsulateFieldsTest extends MultiFileTestCase{ private void doTest(final String fieldName, final String conflicts) throws Exception { + doTest(fieldName, "Test", conflicts); + } + + private void doTest(final String fieldName, final String className, final String conflicts) throws Exception { doTest(new PerformAction() { public void performAction(final VirtualFile rootDir, final VirtualFile rootAfter) throws Exception { - PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.projectScope(myProject)); + PsiClass aClass = myJavaFacade.findClass(className, GlobalSearchScope.projectScope(myProject)); - assertNotNull("Class Test not found", aClass); + assertNotNull("Tested class not found", aClass); doTest(aClass, aClass.findFieldByName(fieldName, false), conflicts, true, true);