diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/UsageTracker.kt b/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/UsageTracker.kt index 32418cdaf16..d5086ccc427 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/UsageTracker.kt +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/UsageTracker.kt @@ -74,7 +74,16 @@ class UsageTracker( val value = descriptor.value if (value !is ImplicitReceiver) return false - return DescriptorUtils.isObject(value.declarationDescriptor) + if (!DescriptorUtils.isObject(value.declarationDescriptor)) return false + if (containingDescriptor == value.declarationDescriptor) return false + + if (containingDescriptor !is ClassDescriptor) { + val containingClass = generateSequence(containingDescriptor) { it.containingDeclaration as? MemberDescriptor } + .first { it is ClassDescriptor } as? ClassDescriptor + if (containingClass != null && containingClass == value.declarationDescriptor) return false + } + + return true } private fun DeclarationDescriptor.getJsNameForCapturedDescriptor(): JsName {