diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/InferenceSession.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/InferenceSession.java index 5b228b751146..50443509c106 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/InferenceSession.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/InferenceSession.java @@ -1298,6 +1298,9 @@ public class InferenceSession { } public GlobalSearchScope getScope() { + if (myContext != null) { + return myContext.getResolveScope(); + } return GlobalSearchScope.allScope(myManager.getProject()); } diff --git a/java/java-tests/testData/codeInsight/multipleJdks/java8/p/BoxedTypesWhenPreGenericJDKPresentInProject.java b/java/java-tests/testData/codeInsight/multipleJdks/java8/p/BoxedTypesWhenPreGenericJDKPresentInProject.java new file mode 100644 index 000000000000..2106209583c4 --- /dev/null +++ b/java/java-tests/testData/codeInsight/multipleJdks/java8/p/BoxedTypesWhenPreGenericJDKPresentInProject.java @@ -0,0 +1,10 @@ +import java.io.File; +import java.util.Arrays; +import java.util.Comparator; + +class Test { + private static File findLastModified(final File[] files) { + return Arrays.stream(files).sorted(Comparator.comparing(File::lastModified).reversed()) + .findFirst().orElse(null); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/MultipleJdksHighlightingTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/MultipleJdksHighlightingTest.java index 5b0b6f47532e..508d8d5e9931 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/MultipleJdksHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/MultipleJdksHighlightingTest.java @@ -57,10 +57,17 @@ public class MultipleJdksHighlightingTest extends UsefulTestCase { myFixture = JavaTestFixtureFactory.getFixtureFactory().createCodeInsightFixture(projectBuilder.getFixture()); myFixture.setTestDataPath(PathManagerEx.getTestDataPath() + "/codeInsight/multipleJdks"); final JavaModuleFixtureBuilder[] builders = new JavaModuleFixtureBuilder[3]; + builders[0] = projectBuilder.addModule(JavaModuleFixtureBuilder.class); builders[0].setLanguageLevel(LanguageLevel.JDK_1_3); + builders[0].addJdk(IdeaTestUtil.getMockJdk14Path().getPath()); + builders[1] = projectBuilder.addModule(JavaModuleFixtureBuilder.class); + builders[1].addJdk(IdeaTestUtil.getMockJdk17Path().getPath()); + builders[2] = projectBuilder.addModule(JavaModuleFixtureBuilder.class); + builders[2].addJdk(IdeaTestUtil.getMockJdk18Path().getPath()); + myFixture.setUp(); myJava3Module = builders[0].getFixture().getModule(); myJava7Module = builders[1].getFixture().getModule(); @@ -68,7 +75,6 @@ public class MultipleJdksHighlightingTest extends UsefulTestCase { ModuleRootModificationUtil.updateModel(myJava3Module, new Consumer() { @Override public void consume(ModifiableRootModel model) { - model.setSdk(IdeaTestUtil.getMockJdk14()); String contentUrl = VfsUtilCore.pathToUrl(myFixture.getTempDirPath()) + "/java3"; model.addContentEntry(contentUrl).addSourceFolder(contentUrl, false); } @@ -77,7 +83,6 @@ public class MultipleJdksHighlightingTest extends UsefulTestCase { ModuleRootModificationUtil.updateModel(myJava7Module, new Consumer() { @Override public void consume(ModifiableRootModel model) { - model.setSdk(IdeaTestUtil.getMockJdk17()); String contentUrl = VfsUtilCore.pathToUrl(myFixture.getTempDirPath()) + "/java7"; model.addContentEntry(contentUrl).addSourceFolder(contentUrl, false); } @@ -86,7 +91,6 @@ public class MultipleJdksHighlightingTest extends UsefulTestCase { ModuleRootModificationUtil.updateModel(myJava8Module, new Consumer() { @Override public void consume(ModifiableRootModel model) { - model.setSdk(IdeaTestUtil.getMockJdk18()); String contentUrl = VfsUtilCore.pathToUrl(myFixture.getTempDirPath()) + "/java8"; model.addContentEntry(contentUrl).addSourceFolder(contentUrl, false); } @@ -169,6 +173,11 @@ public class MultipleJdksHighlightingTest extends UsefulTestCase { doTest3Modules(); } + public void testBoxedTypesWhenPreGenericJDKPresentInProject() throws Exception { + myFixture.configureByFiles("java8/p/" + getTestName(false) + ".java"); + myFixture.checkHighlighting(); + } + public void testRawAssignmentToGenerics() throws Exception { ModuleRootModificationUtil.addDependency(myJava7Module, myJava3Module); final String name = getTestName(false);