[java-psi] IDEA-367231 Incorrect use scope for public class inside non-public non-final containing class

GitOrigin-RevId: 9238a1c2cb5749f4a711815150c14324d8d7f64e
This commit is contained in:
Tagir Valeev
2025-02-11 15:54:30 +00:00
committed by intellij-monorepo-bot
parent fb57088d94
commit 5865ac9553
2 changed files with 22 additions and 1 deletions
@@ -286,7 +286,9 @@ public final class PsiClassImplUtil {
PsiClass containingClass = aClass.getContainingClass();
if (aClass.hasModifierProperty(PsiModifier.PUBLIC) ||
aClass.hasModifierProperty(PsiModifier.PROTECTED)) {
return containingClass == null ? maximalUseScope : containingClass.getUseScope();
// If the containing class is not final, it's possible to expose nested class through public subclass of containing class
return containingClass == null || !containingClass.hasModifierProperty(PsiModifier.FINAL) ?
maximalUseScope : containingClass.getUseScope();
}
else if (aClass.hasModifierProperty(PsiModifier.PRIVATE) || aClass instanceof PsiTypeParameter) {
PsiClass topClass = PsiUtil.getTopLevelClass(aClass);