KT-16250 Handle type alias as imported name qualifier

#KT-16250 Fixed
This commit is contained in:
Dmitry Petrov
2017-02-09 12:33:54 +03:00
committed by Stanislav Erokhin
parent 5f843f6759
commit 20dc1a047d
4 changed files with 39 additions and 1 deletions
@@ -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 ->
@@ -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()
}
@@ -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
}
@@ -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");