getAllOverriddenDescriptors() moved to DescriptorUtils
This commit is contained in:
@@ -21,8 +21,8 @@ import org.jetbrains.jet.lang.descriptors.ClassDescriptor
|
||||
import org.jetbrains.jet.lang.types.JetType
|
||||
import kotlin.platform.platformStatic
|
||||
import org.jetbrains.jet.lang.descriptors.CallableDescriptor
|
||||
import org.jetbrains.jet.lang.resolve.OverrideResolver
|
||||
import org.jetbrains.jet.utils.keysToMapExceptNulls
|
||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils
|
||||
|
||||
public object CodegenUtilKt {
|
||||
|
||||
@@ -43,7 +43,7 @@ public object CodegenUtilKt {
|
||||
.keysToMapExceptNulls {
|
||||
delegatingMember ->
|
||||
|
||||
val actualDelegates = OverrideResolver.getAllOverriddenDescriptors(delegatingMember)
|
||||
val actualDelegates = DescriptorUtils.getAllOverriddenDescriptors(delegatingMember)
|
||||
.filter { it.getContainingDeclaration() == toTrait }
|
||||
.map {
|
||||
overriddenDescriptor ->
|
||||
@@ -53,7 +53,7 @@ public object CodegenUtilKt {
|
||||
// this is the actual member of delegateExpressionType that we are delegating to
|
||||
(scope.getFunctions(name) + scope.getProperties(name))
|
||||
.first {
|
||||
(listOf(it) + OverrideResolver.getAllOverriddenDescriptors(it)).map {it.getOriginal()}.contains(overriddenDescriptor.getOriginal())
|
||||
(listOf(it) + DescriptorUtils.getAllOverriddenDescriptors(it)).map { it.getOriginal() }.contains(overriddenDescriptor.getOriginal())
|
||||
}
|
||||
}
|
||||
assert(actualDelegates.size <= 1) { "Meny delegates found for $delegatingMember: $actualDelegates" }
|
||||
|
||||
@@ -685,7 +685,7 @@ public class JetTypeMapper {
|
||||
//noinspection ConstantConditions
|
||||
if (!KotlinBuiltIns.getInstance().isPrimitiveType(descriptor.getReturnType())) return false;
|
||||
|
||||
for (FunctionDescriptor overridden : OverrideResolver.getAllOverriddenDescriptors(descriptor)) {
|
||||
for (FunctionDescriptor overridden : getAllOverriddenDescriptors(descriptor)) {
|
||||
//noinspection ConstantConditions
|
||||
if (!KotlinBuiltIns.getInstance().isPrimitiveType(overridden.getOriginal().getReturnType())) return true;
|
||||
}
|
||||
|
||||
@@ -298,30 +298,12 @@ public class OverrideResolver {
|
||||
// As other code relies on no equal descriptors passed here, we guard against f == g, but this may not be necessary
|
||||
if (!f.equals(g) && DescriptorEquivalenceForOverrides.INSTANCE$.areEquivalent(f.getOriginal(), g.getOriginal())) return true;
|
||||
CallableDescriptor originalG = g.getOriginal();
|
||||
for (D overriddenFunction : getAllOverriddenDescriptors(f)) {
|
||||
for (D overriddenFunction : DescriptorUtils.getAllOverriddenDescriptors(f)) {
|
||||
if (DescriptorEquivalenceForOverrides.INSTANCE$.areEquivalent(originalG, overriddenFunction.getOriginal())) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <D extends CallableDescriptor> Set<D> getAllOverriddenDescriptors(@NotNull D f) {
|
||||
Set<D> result = new LinkedHashSet<D>();
|
||||
collectAllOverriddenDescriptors((D) f.getOriginal(), result);
|
||||
return result;
|
||||
}
|
||||
|
||||
private static <D extends CallableDescriptor> void collectAllOverriddenDescriptors(@NotNull D current, @NotNull Set<D> result) {
|
||||
if (result.contains(current)) return;
|
||||
for (CallableDescriptor callableDescriptor : current.getOriginal().getOverriddenDescriptors()) {
|
||||
@SuppressWarnings("unchecked")
|
||||
D descriptor = (D) callableDescriptor;
|
||||
collectAllOverriddenDescriptors(descriptor, result);
|
||||
result.add(descriptor);
|
||||
}
|
||||
}
|
||||
|
||||
private static <T extends DeclarationDescriptor> MultiMap<Name, T> groupDescriptorsByName(Collection<T> properties) {
|
||||
MultiMap<Name, T> r = new LinkedMultiMap<Name, T>();
|
||||
for (T property : properties) {
|
||||
@@ -999,31 +981,10 @@ public class OverrideResolver {
|
||||
return filterOutOverridden(result);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static <D extends CallableMemberDescriptor> Set<D> getAllOverriddenDeclarations(@NotNull D memberDescriptor) {
|
||||
Set<D> result = Sets.newHashSet();
|
||||
for (CallableMemberDescriptor overriddenDeclaration : memberDescriptor.getOverriddenDescriptors()) {
|
||||
CallableMemberDescriptor.Kind kind = overriddenDeclaration.getKind();
|
||||
if (kind == DECLARATION) {
|
||||
//noinspection unchecked
|
||||
result.add((D) overriddenDeclaration);
|
||||
}
|
||||
else if (kind == DELEGATION || kind == FAKE_OVERRIDE || kind == SYNTHESIZED) {
|
||||
//do nothing
|
||||
}
|
||||
else {
|
||||
throw new AssertionError("Unexpected callable kind " + kind);
|
||||
}
|
||||
//noinspection unchecked
|
||||
result.addAll(getAllOverriddenDeclarations((D) overriddenDeclaration));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@ReadOnly
|
||||
public static <D extends CallableMemberDescriptor> Set<D> getDeepestSuperDeclarations(@NotNull D functionDescriptor) {
|
||||
Set<D> overriddenDeclarations = getAllOverriddenDeclarations(functionDescriptor);
|
||||
Set<D> overriddenDeclarations = DescriptorUtils.getAllOverriddenDeclarations(functionDescriptor);
|
||||
if (overriddenDeclarations.isEmpty()) {
|
||||
return Collections.singleton(functionDescriptor);
|
||||
}
|
||||
|
||||
@@ -34,11 +34,9 @@ import org.jetbrains.jet.lang.types.TypeConstructor;
|
||||
import org.jetbrains.jet.lang.types.checker.JetTypeChecker;
|
||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
|
||||
import static org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor.Kind.*;
|
||||
import static org.jetbrains.jet.lang.descriptors.ReceiverParameterDescriptor.NO_RECEIVER_PARAMETER;
|
||||
|
||||
public class DescriptorUtils {
|
||||
@@ -410,4 +408,43 @@ public class DescriptorUtils {
|
||||
public static boolean classCanHaveOpenMembers(@NotNull ClassDescriptor classDescriptor) {
|
||||
return classDescriptor.getModality() != Modality.FINAL || classDescriptor.getKind() == ClassKind.ENUM_CLASS;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <D extends CallableDescriptor> Set<D> getAllOverriddenDescriptors(@NotNull D f) {
|
||||
Set<D> result = new LinkedHashSet<D>();
|
||||
collectAllOverriddenDescriptors((D) f.getOriginal(), result);
|
||||
return result;
|
||||
}
|
||||
|
||||
private static <D extends CallableDescriptor> void collectAllOverriddenDescriptors(@NotNull D current, @NotNull Set<D> result) {
|
||||
if (result.contains(current)) return;
|
||||
for (CallableDescriptor callableDescriptor : current.getOriginal().getOverriddenDescriptors()) {
|
||||
@SuppressWarnings("unchecked")
|
||||
D descriptor = (D) callableDescriptor;
|
||||
collectAllOverriddenDescriptors(descriptor, result);
|
||||
result.add(descriptor);
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static <D extends CallableMemberDescriptor> Set<D> getAllOverriddenDeclarations(@NotNull D memberDescriptor) {
|
||||
Set<D> result = new HashSet<D>();
|
||||
for (CallableMemberDescriptor overriddenDeclaration : memberDescriptor.getOverriddenDescriptors()) {
|
||||
CallableMemberDescriptor.Kind kind = overriddenDeclaration.getKind();
|
||||
if (kind == DECLARATION) {
|
||||
//noinspection unchecked
|
||||
result.add((D) overriddenDeclaration);
|
||||
}
|
||||
else if (kind == DELEGATION || kind == FAKE_OVERRIDE || kind == SYNTHESIZED) {
|
||||
//do nothing
|
||||
}
|
||||
else {
|
||||
throw new AssertionError("Unexpected callable kind " + kind);
|
||||
}
|
||||
//noinspection unchecked
|
||||
result.addAll(getAllOverriddenDeclarations((D) overriddenDeclaration));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ import org.jetbrains.jet.lang.psi.*;
|
||||
import org.jetbrains.jet.lang.psi.psiUtil.PsiUtilPackage;
|
||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||
import org.jetbrains.jet.lang.resolve.DescriptorToSourceUtils;
|
||||
import org.jetbrains.jet.lang.resolve.OverrideResolver;
|
||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||
import org.jetbrains.jet.lang.types.JetType;
|
||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||
import org.jetbrains.jet.lexer.JetModifierKeywordToken;
|
||||
@@ -55,7 +55,6 @@ import org.jetbrains.jet.plugin.codeInsight.CodeInsightUtils;
|
||||
import org.jetbrains.jet.plugin.codeInsight.DescriptorToDeclarationUtil;
|
||||
import org.jetbrains.jet.plugin.project.AnalyzerFacadeWithCache;
|
||||
import org.jetbrains.jet.plugin.util.IdeDescriptorRenderers;
|
||||
import org.jetbrains.jet.plugin.util.UtilPackage;
|
||||
import org.jetbrains.jet.plugin.util.string.StringPackage;
|
||||
import org.jetbrains.jet.renderer.DescriptorRenderer;
|
||||
|
||||
@@ -139,7 +138,7 @@ public class JetRefactoringUtil {
|
||||
|
||||
Project project = declaration.getProject();
|
||||
Map<PsiElement, CallableDescriptor> overriddenElementsToDescriptor = new HashMap<PsiElement, CallableDescriptor>();
|
||||
for (CallableDescriptor overriddenDescriptor : OverrideResolver.getAllOverriddenDescriptors(declarationDescriptor)) {
|
||||
for (CallableDescriptor overriddenDescriptor : DescriptorUtils.getAllOverriddenDescriptors(declarationDescriptor)) {
|
||||
PsiElement overriddenDeclaration = DescriptorToDeclarationUtil.INSTANCE$.getDeclaration(project, overriddenDescriptor);
|
||||
if (PsiTreeUtil.instanceOf(overriddenDeclaration, JetNamedFunction.class, JetProperty.class, PsiMethod.class)) {
|
||||
overriddenElementsToDescriptor.put(overriddenDeclaration, overriddenDescriptor);
|
||||
|
||||
+1
-1
@@ -39,7 +39,7 @@ import javax.swing.*;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.jetbrains.jet.lang.resolve.OverrideResolver.filterOutOverridden;
|
||||
import static org.jetbrains.jet.lang.resolve.OverrideResolver.getAllOverriddenDeclarations;
|
||||
import static org.jetbrains.jet.lang.resolve.DescriptorUtils.getAllOverriddenDeclarations;
|
||||
import static org.jetbrains.jet.renderer.DescriptorRenderer.ONLY_NAMES_WITH_SHORT_TYPES;
|
||||
|
||||
class KotlinStructureElementPresentation implements ColoredItemPresentation, LocationPresentation {
|
||||
|
||||
+1
-1
@@ -257,7 +257,7 @@ public final class PatternBuilder {
|
||||
}
|
||||
|
||||
if (checkOverridden) {
|
||||
for (CallableDescriptor overridden : OverrideResolver.getAllOverriddenDescriptors(functionDescriptor)) {
|
||||
for (CallableDescriptor overridden : DescriptorUtils.getAllOverriddenDescriptors(functionDescriptor)) {
|
||||
if (matches(overridden)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ import org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.OverrideResolver;
|
||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||
import org.jetbrains.jet.lang.resolve.constants.CompileTimeConstant;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
|
||||
@@ -80,7 +80,7 @@ public final class AnnotationsUtils {
|
||||
isOverride((CallableMemberDescriptor) declarationDescriptor)) {
|
||||
|
||||
Set<CallableMemberDescriptor> overriddenDeclarations =
|
||||
OverrideResolver.getAllOverriddenDeclarations((CallableMemberDescriptor) declarationDescriptor);
|
||||
DescriptorUtils.getAllOverriddenDeclarations((CallableMemberDescriptor) declarationDescriptor);
|
||||
|
||||
descriptors = ContainerUtil.mapNotNull(overriddenDeclarations, new Function<CallableMemberDescriptor, DeclarationDescriptor>() {
|
||||
@Override
|
||||
|
||||
@@ -22,7 +22,7 @@ import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.backend.common.CodegenUtil;
|
||||
import org.jetbrains.jet.lang.descriptors.*;
|
||||
import org.jetbrains.jet.lang.resolve.OverrideResolver;
|
||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||
@@ -240,7 +240,7 @@ public class ManglingUtils {
|
||||
private static boolean isNativeOrOverrideNative(CallableMemberDescriptor descriptor) {
|
||||
if (AnnotationsUtils.isNativeObject(descriptor)) return true;
|
||||
|
||||
Set<CallableMemberDescriptor> declarations = OverrideResolver.getAllOverriddenDeclarations(descriptor);
|
||||
Set<CallableMemberDescriptor> declarations = DescriptorUtils.getAllOverriddenDeclarations(descriptor);
|
||||
for (CallableMemberDescriptor memberDescriptor : declarations) {
|
||||
if (AnnotationsUtils.isNativeObject(memberDescriptor)) return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user