Extract DescriptorUtils.unwrapFakeOverride()
This commit is contained in:
@@ -162,12 +162,7 @@ public final class DescriptorLookupConverter {
|
||||
@NotNull BindingContext bindingContext,
|
||||
@NotNull DeclarationDescriptor descriptor) {
|
||||
if (descriptor instanceof CallableMemberDescriptor) {
|
||||
CallableMemberDescriptor callableMemberDescriptor = (CallableMemberDescriptor) descriptor;
|
||||
while (callableMemberDescriptor.getKind() == CallableMemberDescriptor.Kind.FAKE_OVERRIDE) {
|
||||
// TODO: need to know all of them
|
||||
callableMemberDescriptor = callableMemberDescriptor.getOverriddenDescriptors().iterator().next();
|
||||
}
|
||||
descriptor = callableMemberDescriptor;
|
||||
descriptor = DescriptorUtils.unwrapFakeOverride((CallableMemberDescriptor) descriptor);
|
||||
}
|
||||
return createLookupElement(analyzer, descriptor, BindingContextUtils.descriptorToDeclaration(bindingContext, descriptor));
|
||||
}
|
||||
|
||||
@@ -28,8 +28,6 @@ import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import static org.jetbrains.jet.lang.resolve.DescriptorUtils.getFqName;
|
||||
import static org.jetbrains.jet.lang.resolve.DescriptorUtils.getFqNameSafe;
|
||||
|
||||
@@ -72,18 +70,11 @@ public final class DecompiledNavigationUtils {
|
||||
|
||||
//TODO: should be done via some generic mechanism
|
||||
@NotNull
|
||||
private static DeclarationDescriptor getEffectiveReferencedDescriptor(@NotNull DeclarationDescriptor referencedDescriptor) {
|
||||
if (referencedDescriptor instanceof CallableMemberDescriptor) {
|
||||
CallableMemberDescriptor callableMemberDescriptor = (CallableMemberDescriptor) referencedDescriptor;
|
||||
CallableMemberDescriptor.Kind kind = callableMemberDescriptor.getKind();
|
||||
if (kind == CallableMemberDescriptor.Kind.FAKE_OVERRIDE) {
|
||||
Set<? extends CallableMemberDescriptor> overriddenDescriptors =
|
||||
callableMemberDescriptor.getOverriddenDescriptors();
|
||||
//TODO: several descriptors
|
||||
return getEffectiveReferencedDescriptor(overriddenDescriptors.iterator().next());
|
||||
}
|
||||
private static DeclarationDescriptor getEffectiveReferencedDescriptor(@NotNull DeclarationDescriptor descriptor) {
|
||||
if (descriptor instanceof CallableMemberDescriptor) {
|
||||
return DescriptorUtils.unwrapFakeOverride((CallableMemberDescriptor) descriptor);
|
||||
}
|
||||
return referencedDescriptor;
|
||||
return descriptor;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -56,6 +56,8 @@ import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.jetbrains.jet.lang.resolve.DescriptorUtils.unwrapFakeOverride;
|
||||
|
||||
public class BuiltInsReferenceResolver extends AbstractProjectComponent {
|
||||
private static final File BUILT_INS_COMPILABLE_SRC_DIR = new File("core/builtins/src", KotlinBuiltIns.BUILT_INS_PACKAGE_NAME_STRING);
|
||||
|
||||
@@ -178,11 +180,7 @@ public class BuiltInsReferenceResolver extends AbstractProjectComponent {
|
||||
private DeclarationDescriptor findCurrentDescriptorForMember(@NotNull MemberDescriptor originalDescriptor) {
|
||||
if (originalDescriptor instanceof CallableMemberDescriptor &&
|
||||
((CallableMemberDescriptor) originalDescriptor).getKind() == CallableMemberDescriptor.Kind.FAKE_OVERRIDE) {
|
||||
CallableMemberDescriptor descriptor = (CallableMemberDescriptor) originalDescriptor;
|
||||
while (descriptor.getKind() == CallableMemberDescriptor.Kind.FAKE_OVERRIDE) {
|
||||
descriptor = descriptor.getOverriddenDescriptors().iterator().next();
|
||||
}
|
||||
return findCurrentDescriptorForMember(descriptor.getOriginal());
|
||||
return findCurrentDescriptorForMember(unwrapFakeOverride((CallableMemberDescriptor) originalDescriptor).getOriginal());
|
||||
}
|
||||
|
||||
DeclarationDescriptor containingDeclaration = findCurrentDescriptor(originalDescriptor.getContainingDeclaration());
|
||||
|
||||
Reference in New Issue
Block a user