mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-08 15:09:39 +07:00
java jigsaw: ensure accessibility checked against type available at call site(IDEA-257587)
GitOrigin-RevId: 8f422afcf376370b331c17602feb927451ce0f69
This commit is contained in:
committed by
intellij-monorepo-bot
parent
fba9444c01
commit
c2bb183152
@@ -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;
|
||||
|
||||
BIN
java/java-tests/testData/codeInsight/jigsaw/lib-named-2.0.jar
Normal file
BIN
java/java-tests/testData/codeInsight/jigsaw/lib-named-2.0.jar
Normal file
Binary file not shown.
@@ -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)
|
||||
|
||||
@@ -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!/")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user