From d7a0dbfae8d0b358dceb2168fdc309be2a6e0956 Mon Sep 17 00:00:00 2001 From: Roman Artemev Date: Tue, 21 Jul 2020 12:09:40 +0300 Subject: [PATCH] [PLUGIN API] Make `referenceClass` resolve type aliases too - fix KT-40193 --- .../backend/common/extensions/IrPluginContextImpl.kt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/extensions/IrPluginContextImpl.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/extensions/IrPluginContextImpl.kt index 3235af4902e..8c808b4722e 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/extensions/IrPluginContextImpl.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/extensions/IrPluginContextImpl.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlin.backend.common.ir.BuiltinSymbolsBase import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ModuleDescriptor +import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor import org.jetbrains.kotlin.incremental.components.NoLookupLocation import org.jetbrains.kotlin.ir.declarations.IrConstructor import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns @@ -77,7 +78,12 @@ open class IrPluginContextImpl( override fun referenceClass(fqName: FqName): IrClassSymbol? { assert(!fqName.isRoot) return resolveSymbol(fqName.parent()) { scope -> - val classDescriptor = scope.getContributedClassifier(fqName.shortName(), NoLookupLocation.FROM_BACKEND) as? ClassDescriptor? + val classifierDescriptor = scope.getContributedClassifier(fqName.shortName(), NoLookupLocation.FROM_BACKEND) + val classDescriptor = when (classifierDescriptor) { + is ClassDescriptor -> classifierDescriptor + is TypeAliasDescriptor -> classifierDescriptor.classDescriptor + else -> error("Unexpected classifier $classifierDescriptor") + } classDescriptor?.let { st.referenceClass(it) }