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);