diff --git a/java/java-tests/testData/codeInsight/multipleJdks/java6/p/StaticCallOnChildWithNotAccessibleParent.java b/java/java-tests/testData/codeInsight/multipleJdks/java6/p/StaticCallOnChildWithNotAccessibleParent.java
new file mode 100644
index 000000000000..d42bcd1c4e40
--- /dev/null
+++ b/java/java-tests/testData/codeInsight/multipleJdks/java6/p/StaticCallOnChildWithNotAccessibleParent.java
@@ -0,0 +1,7 @@
+package p;
+
+class Sample {
+ public static void main(String[] args) {
+ ChildClass.foo();
+ }
+}
diff --git a/java/java-tests/testData/codeInsight/multipleJdks/java7/p/StaticCallOnChildWithNotAccessibleParent.java b/java/java-tests/testData/codeInsight/multipleJdks/java7/p/StaticCallOnChildWithNotAccessibleParent.java
new file mode 100644
index 000000000000..c09ff65de6e8
--- /dev/null
+++ b/java/java-tests/testData/codeInsight/multipleJdks/java7/p/StaticCallOnChildWithNotAccessibleParent.java
@@ -0,0 +1,3 @@
+package p;
+
+public class ChildClass extends BaseClass {}
diff --git a/java/java-tests/testData/codeInsight/multipleJdks/java8/p/StaticCallOnChildWithNotAccessibleParent.java b/java/java-tests/testData/codeInsight/multipleJdks/java8/p/StaticCallOnChildWithNotAccessibleParent.java
new file mode 100644
index 000000000000..9882c3076072
--- /dev/null
+++ b/java/java-tests/testData/codeInsight/multipleJdks/java8/p/StaticCallOnChildWithNotAccessibleParent.java
@@ -0,0 +1,6 @@
+package p;
+
+public class BaseClass {
+ public static void foo() {
+ }
+}
diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/MultipleJdksHighlightingTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/MultipleJdksHighlightingTest.java
index 6d536928038b..6e61d21ecf92 100644
--- a/java/java-tests/testSrc/com/intellij/codeInsight/MultipleJdksHighlightingTest.java
+++ b/java/java-tests/testSrc/com/intellij/codeInsight/MultipleJdksHighlightingTest.java
@@ -34,6 +34,7 @@ import java.util.Calendar;
public class MultipleJdksHighlightingTest extends UsefulTestCase {
private CodeInsightTestFixture myFixture;
+ private Module myJava6Module;
private Module myJava7Module;
private Module myJava8Module;
@@ -47,6 +48,7 @@ public class MultipleJdksHighlightingTest extends UsefulTestCase {
super.tearDown();
myFixture.tearDown();
myFixture = null;
+ myJava6Module = null;
myJava7Module = null;
myJava8Module = null;
}
@@ -57,12 +59,24 @@ public class MultipleJdksHighlightingTest extends UsefulTestCase {
TestFixtureBuilder projectBuilder = IdeaTestFixtureFactory.getFixtureFactory().createFixtureBuilder(getName());
myFixture = JavaTestFixtureFactory.getFixtureFactory().createCodeInsightFixture(projectBuilder.getFixture());
myFixture.setTestDataPath(PathManagerEx.getTestDataPath() + "/codeInsight/multipleJdks");
- final JavaModuleFixtureBuilder[] builders = new JavaModuleFixtureBuilder[2];
+ final JavaModuleFixtureBuilder[] builders = new JavaModuleFixtureBuilder[3];
builders[0] = projectBuilder.addModule(JavaModuleFixtureBuilder.class);
builders[1] = projectBuilder.addModule(JavaModuleFixtureBuilder.class);
+ builders[2] = projectBuilder.addModule(JavaModuleFixtureBuilder.class);
myFixture.setUp();
- myJava7Module = builders[0].getFixture().getModule();
- myJava8Module = builders[1].getFixture().getModule();
+ myJava6Module = builders[0].getFixture().getModule();
+ myJava7Module = builders[1].getFixture().getModule();
+ myJava8Module = builders[2].getFixture().getModule();
+ ModuleRootModificationUtil.updateModel(myJava6Module, new Consumer() {
+ @Override
+ public void consume(ModifiableRootModel model) {
+ model.addModuleOrderEntry(myJava7Module);
+ model.setSdk(IdeaTestUtil.getMockJdk17());
+ String contentUrl = VfsUtilCore.pathToUrl(myFixture.getTempDirPath()) + "/java6";
+ model.addContentEntry(contentUrl).addSourceFolder(contentUrl, false);
+ }
+ });
+
ModuleRootModificationUtil.updateModel(myJava7Module, new Consumer() {
@Override
public void consume(ModifiableRootModel model) {
@@ -135,12 +149,22 @@ public class MultipleJdksHighlightingTest extends UsefulTestCase {
doTestWithoutLibrary();
}
+ public void testStaticCallOnChildWithNotAccessibleParent() throws Exception {
+ doTest3Modules();
+ }
+
private void doTestWithoutLibrary() {
final String name = getTestName(false);
myFixture.configureByFiles("java7/p/" + name + ".java", "java8/p/" + name + ".java");
myFixture.checkHighlighting();
}
+ private void doTest3Modules() {
+ final String name = getTestName(false);
+ myFixture.configureByFiles("java6/p/" + name + ".java", "java7/p/" + name + ".java", "java8/p/" + name + ".java");
+ myFixture.checkHighlighting();
+ }
+
private void doTest() {
final String name = getTestName(false);