From 435be921f2dc2a1ecdf44dcce4f708822cdc727a Mon Sep 17 00:00:00 2001 From: Alexey Andreev Date: Fri, 10 Feb 2017 20:09:30 +0300 Subject: [PATCH] JS: when generating class, translate reference to its parent, so that fragment can import corresponding declaration --- .../kotlin/js/translate/declaration/ClassTranslator.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/ClassTranslator.kt b/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/ClassTranslator.kt index 6936436d78e..62a13d6dcc1 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/ClassTranslator.kt +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/ClassTranslator.kt @@ -43,6 +43,7 @@ import org.jetbrains.kotlin.resolve.BindingContextUtils import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.DescriptorUtils.getClassDescriptorForType import org.jetbrains.kotlin.resolve.DescriptorUtils.getClassDescriptorForTypeConstructor +import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperClassNotAny import org.jetbrains.kotlin.types.CommonSupertypes.topologicallySortSuperclassesAndRecordAllInstances import org.jetbrains.kotlin.types.SimpleType import org.jetbrains.kotlin.types.TypeConstructor @@ -114,6 +115,10 @@ class ClassTranslator private constructor( if (descriptor.kind == ClassKind.ENUM_CLASS) { generateEnumStandardMethods(bodyVisitor.enumEntries) } + + // We don't use generated name. However, by generating the name, we generate corresponding entry in inter-fragment import table. + // This is required to properly merge fragments when one contains super-class and another contains derived class. + descriptor.getSuperClassNotAny()?.let { ReferenceTranslator.translateAsTypeReference(it, context) } } private fun TranslationContext.withUsageTrackerIfNecessary(innerDescriptor: MemberDescriptor): TranslationContext {