diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/QualifiedExpressionResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/QualifiedExpressionResolver.kt index c6e8bf8c3c4..a226ee67723 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/QualifiedExpressionResolver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/QualifiedExpressionResolver.kt @@ -214,11 +214,13 @@ class QualifiedExpressionResolver { return null } - val packageOrClassDescriptor = resolveToPackageOrClass( + val resolvedDescriptor = resolveToPackageOrClass( path.subList(0, path.size - 1), moduleDescriptor, trace, packageFragmentForVisibilityCheck, scopeForFirstPart = null, position = QualifierPosition.IMPORT ) ?: return null + val packageOrClassDescriptor = (resolvedDescriptor as? TypeAliasDescriptor)?.let { it.classDescriptor ?: return null } ?: resolvedDescriptor + return LazyExplicitImportScope(packageOrClassDescriptor, packageFragmentForVisibilityCheck, lastPart.name, aliasName) { candidates -> diff --git a/compiler/testData/diagnostics/tests/typealias/importFromTypeAliasObject.kt b/compiler/testData/diagnostics/tests/typealias/importFromTypeAliasObject.kt new file mode 100644 index 00000000000..9486785b750 --- /dev/null +++ b/compiler/testData/diagnostics/tests/typealias/importFromTypeAliasObject.kt @@ -0,0 +1,15 @@ +// FILE: 1.kt +package bar + +typealias HostAlias = Host + +object Host { + fun foo() {} +} + +// FILE: 2.kt +import bar.HostAlias.foo + +fun test() { + foo() +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/typealias/importFromTypeAliasObject.txt b/compiler/testData/diagnostics/tests/typealias/importFromTypeAliasObject.txt new file mode 100644 index 00000000000..649cfffc274 --- /dev/null +++ b/compiler/testData/diagnostics/tests/typealias/importFromTypeAliasObject.txt @@ -0,0 +1,15 @@ +package + +public fun test(): kotlin.Unit + +package bar { + + public object Host { + private constructor Host() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final fun foo(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + public typealias HostAlias = bar.Host +} diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java index ad2edd1d4c1..4de5d52543b 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java @@ -21913,6 +21913,12 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTest { doTest(fileName); } + @TestMetadata("importFromTypeAliasObject.kt") + public void testImportFromTypeAliasObject() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/typealias/importFromTypeAliasObject.kt"); + doTest(fileName); + } + @TestMetadata("inGenerics.kt") public void testInGenerics() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/typealias/inGenerics.kt");