org.jetbrains.kotlin.resolve
Class OverridingUtil

java.lang.Object
  extended by org.jetbrains.kotlin.resolve.OverridingUtil

public class OverridingUtil
extends java.lang.Object


Nested Class Summary
static class OverridingUtil.OverrideCompatibilityInfo
           
 
Field Summary
static OverridingUtil DEFAULT
           
 
Method Summary
static OverridingUtil createWithEqualityAxioms(KotlinTypeChecker.TypeConstructorEquality equalityAxioms)
           
static
<H> java.util.Collection<H>
extractMembersOverridableInBothWays(H overrider, java.util.Collection<H> extractFrom, kotlin.jvm.functions.Function1<H,CallableDescriptor> descriptorByHandle, kotlin.jvm.functions.Function1<H,kotlin.Unit> onConflict)
           
static
<D extends CallableDescriptor>
java.util.Set<D>
filterOutOverridden(java.util.Set<D> candidateSet)
          Given a set of descriptors, returns a set containing all the given descriptors except those which _are overridden_ by at least one other descriptor from the original set.
static
<D> java.util.Set<D>
filterOverrides(java.util.Set<D> candidateSet, kotlin.jvm.functions.Function1<? super D,? extends CallableDescriptor> transform)
           
static Visibility findMaxVisibility(java.util.Collection<? extends CallableMemberDescriptor> descriptors)
           
static void generateOverridesInFunctionGroup(Name name, java.util.Collection<? extends CallableMemberDescriptor> membersFromSupertypes, java.util.Collection<? extends CallableMemberDescriptor> membersFromCurrent, ClassDescriptor current, OverridingStrategy strategy)
           
static OverridingUtil.OverrideCompatibilityInfo getBasicOverridabilityProblem(CallableDescriptor superDescriptor, CallableDescriptor subDescriptor)
           
static OverridingUtil.OverrideCompatibilityInfo.Result getBothWaysOverridability(CallableDescriptor overriderDescriptor, CallableDescriptor candidateDescriptor)
           
static java.util.Set<CallableMemberDescriptor> getOverriddenDeclarations(CallableMemberDescriptor descriptor)
           
static boolean isMoreSpecific(CallableDescriptor a, CallableDescriptor b)
           
 OverridingUtil.OverrideCompatibilityInfo isOverridableBy(CallableDescriptor superDescriptor, CallableDescriptor subDescriptor, ClassDescriptor subClassDescriptor)
           
 OverridingUtil.OverrideCompatibilityInfo isOverridableBy(CallableDescriptor superDescriptor, CallableDescriptor subDescriptor, ClassDescriptor subClassDescriptor, boolean checkReturnType)
           
 OverridingUtil.OverrideCompatibilityInfo isOverridableByWithoutExternalConditions(CallableDescriptor superDescriptor, CallableDescriptor subDescriptor, boolean checkReturnType)
           
static
<D extends CallableDescriptor>
boolean
overrides(D f, D g)
           
static void resolveUnknownVisibilityForMember(CallableMemberDescriptor memberDescriptor, kotlin.jvm.functions.Function1<CallableMemberDescriptor,kotlin.Unit> cannotInferVisibility)
           
static
<H> H
selectMostSpecificMember(java.util.Collection<H> overridables, kotlin.jvm.functions.Function1<H,CallableDescriptor> descriptorByHandle)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT

public static final OverridingUtil DEFAULT
Method Detail

createWithEqualityAxioms

@NotNull
public static OverridingUtil createWithEqualityAxioms(@NotNull
                                                              KotlinTypeChecker.TypeConstructorEquality equalityAxioms)

filterOutOverridden

@NotNull
public static <D extends CallableDescriptor> java.util.Set<D> filterOutOverridden(@NotNull
                                                                                          java.util.Set<D> candidateSet)
Given a set of descriptors, returns a set containing all the given descriptors except those which _are overridden_ by at least one other descriptor from the original set.


filterOverrides

@NotNull
public static <D> java.util.Set<D> filterOverrides(@NotNull
                                                           java.util.Set<D> candidateSet,
                                                           @NotNull
                                                           kotlin.jvm.functions.Function1<? super D,? extends CallableDescriptor> transform)

overrides

public static <D extends CallableDescriptor> boolean overrides(@NotNull
                                                               D f,
                                                               @NotNull
                                                               D g)
Returns:
whether f overrides g

getOverriddenDeclarations

@NotNull
public static java.util.Set<CallableMemberDescriptor> getOverriddenDeclarations(@NotNull
                                                                                        CallableMemberDescriptor descriptor)
Returns:
overridden real descriptors (not fake overrides). Note that most usages of this method should be followed by calling filterOutOverridden(Set), because some of the declarations can override the other.

isOverridableBy

@NotNull
public OverridingUtil.OverrideCompatibilityInfo isOverridableBy(@NotNull
                                                                        CallableDescriptor superDescriptor,
                                                                        @NotNull
                                                                        CallableDescriptor subDescriptor,
                                                                        @Nullable
                                                                        ClassDescriptor subClassDescriptor)

isOverridableBy

@NotNull
public OverridingUtil.OverrideCompatibilityInfo isOverridableBy(@NotNull
                                                                        CallableDescriptor superDescriptor,
                                                                        @NotNull
                                                                        CallableDescriptor subDescriptor,
                                                                        @Nullable
                                                                        ClassDescriptor subClassDescriptor,
                                                                        boolean checkReturnType)

isOverridableByWithoutExternalConditions

@NotNull
public OverridingUtil.OverrideCompatibilityInfo isOverridableByWithoutExternalConditions(@NotNull
                                                                                                 CallableDescriptor superDescriptor,
                                                                                                 @NotNull
                                                                                                 CallableDescriptor subDescriptor,
                                                                                                 boolean checkReturnType)

getBasicOverridabilityProblem

@Nullable
public static OverridingUtil.OverrideCompatibilityInfo getBasicOverridabilityProblem(@NotNull
                                                                                              CallableDescriptor superDescriptor,
                                                                                              @NotNull
                                                                                              CallableDescriptor subDescriptor)

generateOverridesInFunctionGroup

public static void generateOverridesInFunctionGroup(@NotNull
                                                    Name name,
                                                    @NotNull
                                                    java.util.Collection<? extends CallableMemberDescriptor> membersFromSupertypes,
                                                    @NotNull
                                                    java.util.Collection<? extends CallableMemberDescriptor> membersFromCurrent,
                                                    @NotNull
                                                    ClassDescriptor current,
                                                    @NotNull
                                                    OverridingStrategy strategy)

isMoreSpecific

public static boolean isMoreSpecific(@NotNull
                                     CallableDescriptor a,
                                     @NotNull
                                     CallableDescriptor b)

selectMostSpecificMember

@NotNull
public static <H> H selectMostSpecificMember(@NotNull
                                                     java.util.Collection<H> overridables,
                                                     @NotNull
                                                     kotlin.jvm.functions.Function1<H,CallableDescriptor> descriptorByHandle)

extractMembersOverridableInBothWays

@NotNull
public static <H> java.util.Collection<H> extractMembersOverridableInBothWays(@NotNull
                                                                                      H overrider,
                                                                                      @NotNull@Mutable
                                                                                      java.util.Collection<H> extractFrom,
                                                                                      @NotNull
                                                                                      kotlin.jvm.functions.Function1<H,CallableDescriptor> descriptorByHandle,
                                                                                      @NotNull
                                                                                      kotlin.jvm.functions.Function1<H,kotlin.Unit> onConflict)
Type Parameters:
H - is something that handles CallableDescriptor inside
Returns:

getBothWaysOverridability

@Nullable
public static OverridingUtil.OverrideCompatibilityInfo.Result getBothWaysOverridability(CallableDescriptor overriderDescriptor,
                                                                                                 CallableDescriptor candidateDescriptor)

resolveUnknownVisibilityForMember

public static void resolveUnknownVisibilityForMember(@NotNull
                                                     CallableMemberDescriptor memberDescriptor,
                                                     @Nullable
                                                     kotlin.jvm.functions.Function1<CallableMemberDescriptor,kotlin.Unit> cannotInferVisibility)

findMaxVisibility

@Nullable
public static Visibility findMaxVisibility(@NotNull
                                                    java.util.Collection<? extends CallableMemberDescriptor> descriptors)