JS: fix compile-time failure when inheriting one local class from another local class

This commit is contained in:
Alexey Andreev
2016-09-09 17:48:32 +03:00
parent fc5217f7fc
commit 70c5f05f6e
@@ -65,6 +65,7 @@ class UsageTracker(
}
private fun captureIfNeed(descriptor: DeclarationDescriptor?) {
if (descriptor == null || isCaptured(descriptor) || !isInLocalDeclaration() ||
isAncestor(containingDescriptor, descriptor, /* strict = */ true) ||
isReceiverAncestor(descriptor) || isSingletonReceiver(descriptor)
@@ -111,7 +112,9 @@ class UsageTracker(
val currentClass = descriptor.containingDeclaration as? ClassDescriptor ?: return false
// We always capture enclosing class if it's not outer (i.e. we are capturing members of enclosing class to a local class)
if (containingClass.containingDeclaration !is ClassDescriptor) return false
if (containingClass != currentClass && containingClass.containingDeclaration !is ClassDescriptor) {
return false
}
for (outerDeclaration in generateSequence(containingClass) { it.containingDeclaration as? ClassDescriptor }) {
if (DescriptorUtils.isSubclass(outerDeclaration, currentClass)) return true