[JS IR] Fix exportable super types for enum

^KT-49754 fixed
This commit is contained in:
Ilya Goncharov
2021-11-17 20:05:56 +03:00
committed by Space
parent 756b58d5ce
commit a46c4cf0a5
@@ -6,9 +6,11 @@
package org.jetbrains.kotlin.js.resolve.diagnostics
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.builtins.StandardNames
import org.jetbrains.kotlin.builtins.isFunctionType
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.descriptors.ClassKind.*
import org.jetbrains.kotlin.js.resolve.diagnostics.JsExportDeclarationChecker.isExportable
import org.jetbrains.kotlin.js.translate.utils.AnnotationsUtils
import org.jetbrains.kotlin.psi.KtDeclaration
import org.jetbrains.kotlin.resolve.BindingContext
@@ -131,8 +133,11 @@ object JsExportDeclarationChecker : DeclarationChecker {
return
}
for (superType in descriptor.defaultType.supertypes()) {
if (!superType.isExportable(bindingContext)) {
val supertypes = descriptor.defaultType.supertypes()
val isEnum = supertypes.any { KotlinBuiltIns.isEnum(it) }
for (superType in supertypes) {
if (!superType.isExportable(bindingContext) && !(KotlinBuiltIns.isComparable(superType) && isEnum)) {
trace.report(ErrorsJs.NON_EXPORTABLE_TYPE.on(declaration, "super", superType))
}
}
@@ -192,6 +197,8 @@ object JsExportDeclarationChecker : DeclarationChecker {
if (descriptor !is MemberDescriptor) return false
if (KotlinBuiltIns.isEnum(this)) return true
return descriptor.isEffectivelyExternal() || AnnotationsUtils.isExportedObject(descriptor, bindingContext)
}
}