Change overriddenDescriptors' type from Set to Collection
So that the easiest way of constructing a HashSet in the implementation will be not the only possible way to implement getOverriddenDescriptors(). If there's not too many overridden descriptors, an implementation may decide to return a small list for example instead
This commit is contained in:
@@ -518,7 +518,7 @@ public class OverrideResolver {
|
||||
|
||||
JetModifierList modifierList = member.getModifierList();
|
||||
boolean hasOverrideNode = modifierList != null && modifierList.hasModifier(JetTokens.OVERRIDE_KEYWORD);
|
||||
Set<? extends CallableMemberDescriptor> overriddenDescriptors = declared.getOverriddenDescriptors();
|
||||
Collection<? extends CallableMemberDescriptor> overriddenDescriptors = declared.getOverriddenDescriptors();
|
||||
|
||||
if (hasOverrideNode) {
|
||||
checkOverridesForMemberMarkedOverride(declared, true, new CheckOverrideReportStrategy() {
|
||||
@@ -580,7 +580,7 @@ public class OverrideResolver {
|
||||
boolean checkIfOverridesNothing,
|
||||
@NotNull CheckOverrideReportStrategy reportError
|
||||
) {
|
||||
Set<? extends CallableMemberDescriptor> overriddenDescriptors = declared.getOverriddenDescriptors();
|
||||
Collection<? extends CallableMemberDescriptor> overriddenDescriptors = declared.getOverriddenDescriptors();
|
||||
|
||||
for (CallableMemberDescriptor overridden : overriddenDescriptors) {
|
||||
if (overridden == null) continue;
|
||||
@@ -872,11 +872,10 @@ public class OverrideResolver {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static <D extends CallableMemberDescriptor> Set<D> getDirectlyOverriddenDeclarations(@NotNull D descriptor) {
|
||||
Set<D> result = Sets.newHashSet();
|
||||
public static <D extends CallableMemberDescriptor> Collection<D> getDirectlyOverriddenDeclarations(@NotNull D descriptor) {
|
||||
Set<D> result = new LinkedHashSet<D>();
|
||||
//noinspection unchecked
|
||||
Set<D> overriddenDescriptors = (Set<D>) descriptor.getOverriddenDescriptors();
|
||||
for (D overriddenDescriptor : overriddenDescriptors) {
|
||||
for (D overriddenDescriptor : (Collection<D>) descriptor.getOverriddenDescriptors()) {
|
||||
CallableMemberDescriptor.Kind kind = overriddenDescriptor.getKind();
|
||||
if (kind == DECLARATION) {
|
||||
result.add(overriddenDescriptor);
|
||||
|
||||
@@ -22,8 +22,8 @@ import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.types.JetType;
|
||||
import org.jetbrains.kotlin.types.TypeSubstitutor;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public interface CallableDescriptor extends DeclarationDescriptorWithVisibility, DeclarationDescriptorNonRoot {
|
||||
@Nullable
|
||||
@@ -66,8 +66,6 @@ public interface CallableDescriptor extends DeclarationDescriptorWithVisibility,
|
||||
*/
|
||||
boolean hasSynthesizedParameterNames();
|
||||
|
||||
// Workaround for KT-4609 Wildcard types (super/extends) shouldn't be loaded as nullable
|
||||
@KotlinSignature("fun getOverriddenDescriptors(): Set<out CallableDescriptor>")
|
||||
@NotNull
|
||||
Set<? extends CallableDescriptor> getOverriddenDescriptors();
|
||||
Collection<? extends CallableDescriptor> getOverriddenDescriptors();
|
||||
}
|
||||
|
||||
@@ -16,16 +16,14 @@
|
||||
|
||||
package org.jetbrains.kotlin.descriptors;
|
||||
|
||||
import jet.runtime.typeinfo.KotlinSignature;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.Collection;
|
||||
|
||||
public interface CallableMemberDescriptor extends CallableDescriptor, MemberDescriptor {
|
||||
@KotlinSignature("fun getOverriddenDescriptors(): MutableSet<out CallableMemberDescriptor>")
|
||||
@NotNull
|
||||
@Override
|
||||
Set<? extends CallableMemberDescriptor> getOverriddenDescriptors();
|
||||
Collection<? extends CallableMemberDescriptor> getOverriddenDescriptors();
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
|
||||
@@ -19,7 +19,7 @@ package org.jetbrains.kotlin.descriptors;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.types.TypeSubstitutor;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.Collection;
|
||||
|
||||
public interface FunctionDescriptor extends CallableMemberDescriptor {
|
||||
@Override
|
||||
@@ -35,7 +35,7 @@ public interface FunctionDescriptor extends CallableMemberDescriptor {
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
Set<? extends FunctionDescriptor> getOverriddenDescriptors();
|
||||
Collection<? extends FunctionDescriptor> getOverriddenDescriptors();
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
|
||||
+2
-2
@@ -18,7 +18,7 @@ package org.jetbrains.kotlin.descriptors;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.Collection;
|
||||
|
||||
public interface PropertyAccessorDescriptor extends FunctionDescriptor {
|
||||
boolean hasBody();
|
||||
@@ -31,7 +31,7 @@ public interface PropertyAccessorDescriptor extends FunctionDescriptor {
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
Set<? extends PropertyAccessorDescriptor> getOverriddenDescriptors();
|
||||
Collection<? extends PropertyAccessorDescriptor> getOverriddenDescriptors();
|
||||
|
||||
@NotNull
|
||||
PropertyDescriptor getCorrespondingProperty();
|
||||
|
||||
@@ -20,8 +20,8 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.types.TypeSubstitutor;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public interface PropertyDescriptor extends VariableDescriptor, CallableMemberDescriptor {
|
||||
@Nullable
|
||||
@@ -49,7 +49,7 @@ public interface PropertyDescriptor extends VariableDescriptor, CallableMemberDe
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
Set<? extends PropertyDescriptor> getOverriddenDescriptors();
|
||||
Collection<? extends PropertyDescriptor> getOverriddenDescriptors();
|
||||
|
||||
@Override
|
||||
PropertyDescriptor substitute(@NotNull TypeSubstitutor substitutor);
|
||||
|
||||
@@ -18,7 +18,7 @@ package org.jetbrains.kotlin.descriptors;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.Collection;
|
||||
|
||||
public interface PropertyGetterDescriptor extends PropertyAccessorDescriptor {
|
||||
@NotNull
|
||||
@@ -27,5 +27,5 @@ public interface PropertyGetterDescriptor extends PropertyAccessorDescriptor {
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
Set<? extends PropertyGetterDescriptor> getOverriddenDescriptors();
|
||||
Collection<? extends PropertyGetterDescriptor> getOverriddenDescriptors();
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ package org.jetbrains.kotlin.descriptors;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.Collection;
|
||||
|
||||
public interface PropertySetterDescriptor extends PropertyAccessorDescriptor {
|
||||
@NotNull
|
||||
@@ -27,5 +27,5 @@ public interface PropertySetterDescriptor extends PropertyAccessorDescriptor {
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
Set<? extends PropertySetterDescriptor> getOverriddenDescriptors();
|
||||
Collection<? extends PropertySetterDescriptor> getOverriddenDescriptors();
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.name.Name;
|
||||
import org.jetbrains.kotlin.types.JetType;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.Collection;
|
||||
|
||||
public interface ValueParameterDescriptor extends VariableDescriptor, ParameterDescriptor {
|
||||
@NotNull
|
||||
@@ -58,5 +58,5 @@ public interface ValueParameterDescriptor extends VariableDescriptor, ParameterD
|
||||
*/
|
||||
@NotNull
|
||||
@Override
|
||||
Set<? extends ValueParameterDescriptor> getOverriddenDescriptors();
|
||||
Collection<? extends ValueParameterDescriptor> getOverriddenDescriptors();
|
||||
}
|
||||
|
||||
+2
-2
@@ -26,9 +26,9 @@ import org.jetbrains.kotlin.types.JetType;
|
||||
import org.jetbrains.kotlin.types.TypeSubstitutor;
|
||||
import org.jetbrains.kotlin.types.Variance;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public abstract class AbstractReceiverParameterDescriptor extends DeclarationDescriptorImpl implements ReceiverParameterDescriptor {
|
||||
private static final Name RECEIVER_PARAMETER_NAME = Name.special("<this>");
|
||||
@@ -100,7 +100,7 @@ public abstract class AbstractReceiverParameterDescriptor extends DeclarationDes
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Set<? extends CallableDescriptor> getOverriddenDescriptors() {
|
||||
public Collection<? extends CallableDescriptor> getOverriddenDescriptors() {
|
||||
return Collections.emptySet();
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -22,9 +22,9 @@ import org.jetbrains.kotlin.descriptors.*;
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations;
|
||||
import org.jetbrains.kotlin.name.Name;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor.NO_RECEIVER_PARAMETER;
|
||||
|
||||
@@ -101,7 +101,7 @@ public class ConstructorDescriptorImpl extends FunctionDescriptorImpl implements
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Set<? extends FunctionDescriptor> getOverriddenDescriptors() {
|
||||
public Collection<? extends FunctionDescriptor> getOverriddenDescriptors() {
|
||||
return Collections.emptySet();
|
||||
}
|
||||
|
||||
|
||||
+2
-5
@@ -27,10 +27,7 @@ import org.jetbrains.kotlin.types.JetType;
|
||||
import org.jetbrains.kotlin.types.TypeSubstitutor;
|
||||
import org.jetbrains.kotlin.types.Variance;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
|
||||
public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRootImpl implements FunctionDescriptor {
|
||||
private List<TypeParameterDescriptor> typeParameters;
|
||||
@@ -120,7 +117,7 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Set<? extends FunctionDescriptor> getOverriddenDescriptors() {
|
||||
public Collection<? extends FunctionDescriptor> getOverriddenDescriptors() {
|
||||
return overriddenFunctions;
|
||||
}
|
||||
|
||||
|
||||
+3
-6
@@ -23,10 +23,7 @@ import org.jetbrains.kotlin.descriptors.annotations.Annotations;
|
||||
import org.jetbrains.kotlin.name.Name;
|
||||
import org.jetbrains.kotlin.types.TypeSubstitutor;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
|
||||
public abstract class PropertyAccessorDescriptorImpl extends DeclarationDescriptorNonRootImpl implements PropertyAccessorDescriptor {
|
||||
|
||||
@@ -142,8 +139,8 @@ public abstract class PropertyAccessorDescriptorImpl extends DeclarationDescript
|
||||
}
|
||||
|
||||
@NotNull
|
||||
protected Set<PropertyAccessorDescriptor> getOverriddenDescriptors(boolean isGetter) {
|
||||
Set<? extends PropertyDescriptor> overriddenProperties = getCorrespondingProperty().getOverriddenDescriptors();
|
||||
protected Collection<PropertyAccessorDescriptor> getOverriddenDescriptors(boolean isGetter) {
|
||||
Collection<? extends PropertyDescriptor> overriddenProperties = getCorrespondingProperty().getOverriddenDescriptors();
|
||||
// LinkedHashSet for determinism
|
||||
Set<PropertyAccessorDescriptor> overriddenAccessors = new LinkedHashSet<PropertyAccessorDescriptor>();
|
||||
for (PropertyDescriptor overriddenProperty : overriddenProperties) {
|
||||
|
||||
+1
-1
@@ -325,7 +325,7 @@ public class PropertyDescriptorImpl extends VariableDescriptorWithInitializerImp
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Set<? extends PropertyDescriptor> getOverriddenDescriptors() {
|
||||
public Collection<? extends PropertyDescriptor> getOverriddenDescriptors() {
|
||||
return overriddenProperties;
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -23,9 +23,9 @@ import org.jetbrains.kotlin.descriptors.annotations.Annotations;
|
||||
import org.jetbrains.kotlin.name.Name;
|
||||
import org.jetbrains.kotlin.types.JetType;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class PropertyGetterDescriptorImpl extends PropertyAccessorDescriptorImpl implements PropertyGetterDescriptor {
|
||||
private JetType returnType;
|
||||
@@ -57,8 +57,8 @@ public class PropertyGetterDescriptorImpl extends PropertyAccessorDescriptorImpl
|
||||
@NotNull
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public Set<? extends PropertyGetterDescriptor> getOverriddenDescriptors() {
|
||||
return (Set) super.getOverriddenDescriptors(true);
|
||||
public Collection<? extends PropertyGetterDescriptor> getOverriddenDescriptors() {
|
||||
return (Collection) super.getOverriddenDescriptors(true);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
+3
-3
@@ -23,9 +23,9 @@ import org.jetbrains.kotlin.descriptors.annotations.Annotations;
|
||||
import org.jetbrains.kotlin.name.Name;
|
||||
import org.jetbrains.kotlin.types.JetType;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilPackage.getBuiltIns;
|
||||
|
||||
@@ -73,8 +73,8 @@ public class PropertySetterDescriptorImpl extends PropertyAccessorDescriptorImpl
|
||||
@NotNull
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public Set<? extends PropertySetterDescriptor> getOverriddenDescriptors() {
|
||||
return (Set) super.getOverriddenDescriptors(false);
|
||||
public Collection<? extends PropertySetterDescriptor> getOverriddenDescriptors() {
|
||||
return (Collection) super.getOverriddenDescriptors(false);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
+3
-3
@@ -27,8 +27,8 @@ import org.jetbrains.kotlin.resolve.constants.ConstantValue;
|
||||
import org.jetbrains.kotlin.types.JetType;
|
||||
import org.jetbrains.kotlin.types.TypeSubstitutor;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Set;
|
||||
|
||||
public class ValueParameterDescriptorImpl extends VariableDescriptorImpl implements ValueParameterDescriptor {
|
||||
private final boolean declaresDefaultValue;
|
||||
@@ -122,8 +122,8 @@ public class ValueParameterDescriptorImpl extends VariableDescriptorImpl impleme
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Set<? extends ValueParameterDescriptor> getOverriddenDescriptors() {
|
||||
Set<? extends CallableDescriptor> overriddenFunctions = getContainingDeclaration().getOverriddenDescriptors();
|
||||
public Collection<? extends ValueParameterDescriptor> getOverriddenDescriptors() {
|
||||
Collection<? extends CallableDescriptor> overriddenFunctions = getContainingDeclaration().getOverriddenDescriptors();
|
||||
if (overriddenFunctions.isEmpty()) return Collections.emptySet();
|
||||
|
||||
return KotlinPackage.toSet(KotlinPackage.map(overriddenFunctions, new Function1<CallableDescriptor, ValueParameterDescriptor>() {
|
||||
|
||||
+2
-2
@@ -23,9 +23,9 @@ import org.jetbrains.kotlin.descriptors.annotations.Annotations;
|
||||
import org.jetbrains.kotlin.name.Name;
|
||||
import org.jetbrains.kotlin.types.JetType;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public abstract class VariableDescriptorImpl extends DeclarationDescriptorNonRootImpl implements VariableDescriptor {
|
||||
protected JetType outType;
|
||||
@@ -77,7 +77,7 @@ public abstract class VariableDescriptorImpl extends DeclarationDescriptorNonRoo
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Set<? extends CallableDescriptor> getOverriddenDescriptors() {
|
||||
public Collection<? extends CallableDescriptor> getOverriddenDescriptors() {
|
||||
return Collections.emptySet();
|
||||
}
|
||||
|
||||
|
||||
@@ -443,7 +443,7 @@ public class DescriptorUtils {
|
||||
@NotNull
|
||||
public static <D extends CallableMemberDescriptor> D unwrapFakeOverride(@NotNull D descriptor) {
|
||||
while (descriptor.getKind() == CallableMemberDescriptor.Kind.FAKE_OVERRIDE) {
|
||||
Set<? extends CallableMemberDescriptor> overridden = descriptor.getOverriddenDescriptors();
|
||||
Collection<? extends CallableMemberDescriptor> overridden = descriptor.getOverriddenDescriptors();
|
||||
if (overridden.isEmpty()) {
|
||||
throw new IllegalStateException("Fake override should have at least one overridden descriptor: " + descriptor);
|
||||
}
|
||||
|
||||
@@ -447,7 +447,7 @@ public class OverridingUtil {
|
||||
|
||||
@Nullable
|
||||
private static Visibility computeVisibilityToInherit(@NotNull CallableMemberDescriptor memberDescriptor) {
|
||||
Set<? extends CallableMemberDescriptor> overriddenDescriptors = memberDescriptor.getOverriddenDescriptors();
|
||||
Collection<? extends CallableMemberDescriptor> overriddenDescriptors = memberDescriptor.getOverriddenDescriptors();
|
||||
Visibility maxVisibility = findMaxVisibility(overriddenDescriptors);
|
||||
if (maxVisibility == null) {
|
||||
return null;
|
||||
|
||||
@@ -59,7 +59,7 @@ public abstract class CallableRefactoring<T: CallableDescriptor>(
|
||||
return false
|
||||
}
|
||||
|
||||
private fun getClosestModifiableDescriptors(): Set<CallableDescriptor> {
|
||||
private fun getClosestModifiableDescriptors(): Collection<CallableDescriptor> {
|
||||
return when (kind) {
|
||||
DECLARATION -> {
|
||||
Collections.singleton(callableDescriptor)
|
||||
|
||||
@@ -135,14 +135,13 @@ public final class JsDescriptorUtils {
|
||||
|
||||
@Nullable
|
||||
public static FunctionDescriptor getOverriddenDescriptor(@NotNull FunctionDescriptor functionDescriptor) {
|
||||
Set<? extends FunctionDescriptor> overriddenDescriptors = functionDescriptor.getOverriddenDescriptors();
|
||||
Collection<? extends FunctionDescriptor> overriddenDescriptors = functionDescriptor.getOverriddenDescriptors();
|
||||
if (overriddenDescriptors.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
else {
|
||||
//TODO: for now translator can't deal with multiple inheritance good enough
|
||||
return overriddenDescriptors.iterator().next();
|
||||
}
|
||||
|
||||
//TODO: for now translator can't deal with multiple inheritance good enough
|
||||
return overriddenDescriptors.iterator().next();
|
||||
}
|
||||
|
||||
private static boolean isDefaultAccessor(@Nullable PropertyAccessorDescriptor accessorDescriptor) {
|
||||
|
||||
Reference in New Issue
Block a user