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