diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/QualifiedNameResolution.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/QualifiedNameResolution.kt index fc0d8f940e4..8b1c6db1ada 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/QualifiedNameResolution.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/QualifiedNameResolution.kt @@ -47,6 +47,17 @@ fun BodyResolveComponents.resolveRootPartOfQualifier( for (scope in createCurrentScopeList()) { scope.getSingleClassifier(name)?.let { if (it is FirRegularClassSymbol) { + val isVisible = session.visibilityChecker.isVisible( + it.fir, + session, + file, + containingDeclarations, + null, + false, + ) + if (!isVisible) { + return@let + } val classId = it.classId return buildResolvedQualifier { this.source = source diff --git a/compiler/testData/diagnostics/tests/imports/InaccessiblePrivateInFile.kt b/compiler/testData/diagnostics/tests/imports/InaccessiblePrivateInFile.kt index 745886e04b9..76bd8454908 100644 --- a/compiler/testData/diagnostics/tests/imports/InaccessiblePrivateInFile.kt +++ b/compiler/testData/diagnostics/tests/imports/InaccessiblePrivateInFile.kt @@ -3,7 +3,9 @@ // FILE: f11.kt package api -interface ApplicabilityResult +interface ApplicabilityResult { + object Inapplicable : ApplicabilityResult {} +} // FILE: f12.kt package api @@ -28,3 +30,10 @@ class NullArgumentMapping : ArgumentMapping { override fun highlightingApplicabilities(): ApplicabilityResult = object : ApplicabilityResult { } } + +class PositionalArgumentMapping : ArgumentMapping { + // The return type is now resolved properly v + override fun highlightingApplicabilities(): ApplicabilityResult = + // However, here v we still have a problem + ApplicabilityResult.Inapplicable +} diff --git a/compiler/testData/diagnostics/tests/imports/InaccessiblePrivateInFile.txt b/compiler/testData/diagnostics/tests/imports/InaccessiblePrivateInFile.txt index 051ed4c4296..1591a81fc03 100644 --- a/compiler/testData/diagnostics/tests/imports/InaccessiblePrivateInFile.txt +++ b/compiler/testData/diagnostics/tests/imports/InaccessiblePrivateInFile.txt @@ -7,6 +7,13 @@ package api { public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public object Inapplicable : api.ApplicabilityResult { + private constructor Inapplicable() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } } public interface ArgumentMapping { @@ -39,5 +46,13 @@ package impl { public open override /*1*/ fun highlightingApplicabilities(): api.ApplicabilityResult public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } + + public final class PositionalArgumentMapping : api.ArgumentMapping { + public constructor PositionalArgumentMapping() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ fun highlightingApplicabilities(): api.ApplicabilityResult + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } }