java jigsaw: ensure accessibility checked against type available at call site(IDEA-257587)

GitOrigin-RevId: 8f422afcf376370b331c17602feb927451ce0f69
This commit is contained in:
Anna Kozlova
2020-12-17 13:19:02 +01:00
committed by intellij-monorepo-bot
parent fba9444c01
commit c2bb183152
4 changed files with 11 additions and 1 deletions

View File

@@ -27,6 +27,7 @@ import com.intellij.openapi.util.TextRange;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.*;
import com.intellij.psi.controlFlow.ControlFlowUtil;
import com.intellij.psi.impl.PsiClassImplUtil;
import com.intellij.psi.impl.source.javadoc.PsiDocMethodOrFieldRef;
import com.intellij.psi.impl.source.resolve.JavaResolveUtil;
import com.intellij.psi.impl.source.resolve.graphInference.PsiPolyExpressionUtil;
@@ -1653,7 +1654,7 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
private boolean checkFunctionalInterfaceTypeAccessible(@NotNull PsiFunctionalExpression expression,
@NotNull PsiType functionalInterfaceType,
boolean checkFunctionalTypeSignature) {
PsiClassType.ClassResolveResult resolveResult = PsiUtil.resolveGenericsClassInType(functionalInterfaceType);
PsiClassType.ClassResolveResult resolveResult = PsiUtil.resolveGenericsClassInType(PsiClassImplUtil.correctType(functionalInterfaceType, expression.getResolveScope()));
PsiClass psiClass = resolveResult.getElement();
if (psiClass == null) {
return false;

View File

@@ -369,6 +369,14 @@ class ModuleHighlightingTest : LightJava9ModulesCodeInsightFixtureTestCase() {
highlight("module M { requires M6; }")
}
fun testCorrectedType() {
addFile("module-info.java", "module M { requires M6; requires lib.named; }")
addFile("module-info.java", "module M6 { requires lib.named; exports pkg;}", M6)
addFile("pkg/A.java", "package pkg; public class A {public static void foo(java.util.function.Supplier<pkg.lib1.LC1> f){}}", M6)
highlight("pkg/Usage.java","import pkg.lib1.LC1; class Usage { {pkg.A.foo(LC1::new);} }")
}
fun testDeprecations() {
myFixture.enableInspections(DeprecationInspection(), MarkedForRemovalInspection())
addFile("module-info.java", "@Deprecated module M2 { }", M2)

View File

@@ -93,6 +93,7 @@ object MultiModuleJava9ProjectDescriptor : DefaultLightProjectDescriptor() {
ModuleRootModificationUtil.addModuleLibrary(m2, "${libDir}/lib-auto-1.0.jar!/")
ModuleRootModificationUtil.addModuleLibrary(m4, "${libDir}/lib-auto-2.0.jar!/")
ModuleRootModificationUtil.addModuleLibrary(m6, "${libDir}/lib-named-2.0.jar!/")
}
}