Fix visibility checks for constructor call based on type alias

Constructor is invisible iff. either underlying constructor or corresposing type alias is invisible

 #KT-12888 Fixed
This commit is contained in:
Denis Zharkov
2016-06-28 12:33:25 +03:00
parent 1b416a674d
commit f1363cbf88
4 changed files with 64 additions and 0 deletions
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.descriptors;
import kotlin.collections.SetsKt;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.descriptors.impl.TypeAliasConstructorDescriptor;
import org.jetbrains.kotlin.resolve.DescriptorUtils;
import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue;
import org.jetbrains.kotlin.resolve.scopes.receivers.SuperCallReceiverValue;
@@ -315,6 +316,14 @@ public class Visibilities {
}
parent = DescriptorUtils.getParentOfType(parent, DeclarationDescriptorWithVisibility.class);
}
if (what instanceof TypeAliasConstructorDescriptor) {
DeclarationDescriptorWithVisibility invisibleMember =
findInvisibleMember(receiver, ((TypeAliasConstructorDescriptor) what).getTypeAliasDescriptor(), from);
if (invisibleMember != null) return invisibleMember;
}
return null;
}