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:
Alexander Udalov
2015-08-06 04:27:59 +03:00
parent d328727cea
commit f3857cbb89
22 changed files with 49 additions and 61 deletions
@@ -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
@@ -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();
}
@@ -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();
}
@@ -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();
}
@@ -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;
}
@@ -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) {
@@ -325,7 +325,7 @@ public class PropertyDescriptorImpl extends VariableDescriptorWithInitializerImp
@NotNull
@Override
public Set<? extends PropertyDescriptor> getOverriddenDescriptors() {
public Collection<? extends PropertyDescriptor> getOverriddenDescriptors() {
return overriddenProperties;
}
@@ -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
@@ -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
@@ -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>() {
@@ -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) {