From 9bc7d27fe13e08a1e8d40752e65b004692c72176 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 14 Aug 2014 15:13:41 +0400 Subject: [PATCH] Remove dependency of "descriptors" on Lists Also insert a sensible starting capacity almost everywhere --- .../CompositePackageFragmentProvider.java | 5 ++-- .../impl/FunctionDescriptorImpl.java | 13 ++++++---- .../impl/LazySubstitutingClassDescriptor.java | 25 +++++++++++-------- .../impl/PackageViewDescriptorImpl.java | 4 +-- .../impl/PropertyDescriptorImpl.java | 19 ++++++++------ .../descriptors/impl/SubpackagesScope.java | 7 +++--- .../jet/lang/resolve/OverridingUtil.java | 5 ++-- .../calls/inference/ConstraintPosition.java | 4 +-- .../calls/inference/ConstraintSystemImpl.java | 7 +++--- .../calls/inference/TypeBoundsImpl.java | 9 +++---- .../IntegerValueTypeConstructor.java | 4 +-- .../jet/lang/resolve/name/FqName.java | 4 +-- .../jet/lang/resolve/name/FqNameUnsafe.java | 6 ++--- .../jet/lang/resolve/scopes/ChainedScope.java | 12 ++++++--- .../jet/lang/types/TypeSubstitutor.java | 9 ++++--- .../jetbrains/jet/lang/types/TypeUtils.java | 25 ++++++++----------- .../jet/lang/types/lang/KotlinBuiltIns.java | 8 +++--- .../jet/renderer/DescriptorRendererImpl.java | 10 ++++---- 18 files changed, 92 insertions(+), 84 deletions(-) diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/CompositePackageFragmentProvider.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/CompositePackageFragmentProvider.java index 85757a21263..3b5c327df09 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/CompositePackageFragmentProvider.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/CompositePackageFragmentProvider.java @@ -16,13 +16,13 @@ package org.jetbrains.jet.lang.descriptors.impl; -import com.google.common.collect.Lists; import com.google.common.collect.Sets; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor; import org.jetbrains.jet.lang.descriptors.PackageFragmentProvider; import org.jetbrains.jet.lang.resolve.name.FqName; +import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Set; @@ -38,10 +38,11 @@ public class CompositePackageFragmentProvider implements PackageFragmentProvider @NotNull @Override public List getPackageFragments(@NotNull FqName fqName) { - List result = Lists.newArrayList(); + ArrayList result = new ArrayList(); for (PackageFragmentProvider provider : providers) { result.addAll(provider.getPackageFragments(fqName)); } + result.trimToSize(); return result; } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/FunctionDescriptorImpl.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/FunctionDescriptorImpl.java index eb94b70262b..79c0079403e 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/FunctionDescriptorImpl.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/FunctionDescriptorImpl.java @@ -16,7 +16,6 @@ package org.jetbrains.jet.lang.descriptors.impl; -import com.google.common.collect.Lists; import com.google.common.collect.Sets; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -69,8 +68,9 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo @NotNull List unsubstitutedValueParameters, @Nullable JetType unsubstitutedReturnType, @Nullable Modality modality, - @NotNull Visibility visibility) { - this.typeParameters = Lists.newArrayList(typeParameters); + @NotNull Visibility visibility + ) { + this.typeParameters = new ArrayList(typeParameters); this.unsubstitutedValueParameters = unsubstitutedValueParameters; this.unsubstitutedReturnType = unsubstitutedReturnType; this.modality = modality; @@ -202,8 +202,11 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo ) { FunctionDescriptorImpl substitutedDescriptor = createSubstitutedCopy(newOwner, original, kind); - List substitutedTypeParameters = Lists.newArrayList(); - TypeSubstitutor substitutor = DescriptorSubstitutor.substituteTypeParameters(getTypeParameters(), originalSubstitutor, substitutedDescriptor, substitutedTypeParameters); + List originalTypeParameters = getTypeParameters(); + List substitutedTypeParameters = new ArrayList(originalTypeParameters.size()); + TypeSubstitutor substitutor = DescriptorSubstitutor.substituteTypeParameters( + originalTypeParameters, originalSubstitutor, substitutedDescriptor, substitutedTypeParameters + ); JetType substitutedReceiverParameterType = null; if (receiverParameter != null) { diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/LazySubstitutingClassDescriptor.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/LazySubstitutingClassDescriptor.java index 0cb80ffc9d3..0bc7b2bebcf 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/LazySubstitutingClassDescriptor.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/LazySubstitutingClassDescriptor.java @@ -16,7 +16,6 @@ package org.jetbrains.jet.lang.descriptors.impl; -import com.google.common.collect.Lists; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.*; @@ -26,17 +25,16 @@ import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.SubstitutingScope; import org.jetbrains.jet.lang.types.*; +import java.util.ArrayList; import java.util.Collection; import java.util.List; public class LazySubstitutingClassDescriptor implements ClassDescriptor { - private final ClassDescriptor original; private final TypeSubstitutor originalSubstitutor; private TypeSubstitutor newSubstitutor; private List typeParameters; private TypeConstructor typeConstructor; - private JetType superclassType; public LazySubstitutingClassDescriptor(ClassDescriptor descriptor, TypeSubstitutor substitutor) { this.original = descriptor; @@ -49,8 +47,11 @@ public class LazySubstitutingClassDescriptor implements ClassDescriptor { newSubstitutor = originalSubstitutor; } else { - typeParameters = Lists.newArrayList(); - newSubstitutor = DescriptorSubstitutor.substituteTypeParameters(original.getTypeConstructor().getParameters(), originalSubstitutor, this, typeParameters); + List originalTypeParameters = original.getTypeConstructor().getParameters(); + typeParameters = new ArrayList(originalTypeParameters.size()); + newSubstitutor = DescriptorSubstitutor.substituteTypeParameters( + originalTypeParameters, originalSubstitutor, this, typeParameters + ); } } return newSubstitutor; @@ -67,8 +68,9 @@ public class LazySubstitutingClassDescriptor implements ClassDescriptor { if (typeConstructor == null) { TypeSubstitutor substitutor = getSubstitutor(); - Collection supertypes = Lists.newArrayList(); - for (JetType supertype : originalTypeConstructor.getSupertypes()) { + Collection originalSupertypes = originalTypeConstructor.getSupertypes(); + Collection supertypes = new ArrayList(originalSupertypes.size()); + for (JetType supertype : originalSupertypes) { supertypes.add(substitutor.substitute(supertype, Variance.INVARIANT)); } @@ -110,11 +112,12 @@ public class LazySubstitutingClassDescriptor implements ClassDescriptor { @NotNull @Override public Collection getConstructors() { - Collection r = Lists.newArrayList(); - for (ConstructorDescriptor constructor : original.getConstructors()) { - r.add((ConstructorDescriptor) constructor.substitute(getSubstitutor())); + Collection originalConstructors = original.getConstructors(); + Collection result = new ArrayList(originalConstructors.size()); + for (ConstructorDescriptor constructor : originalConstructors) { + result.add((ConstructorDescriptor) constructor.substitute(getSubstitutor())); } - return r; + return result; } @NotNull diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/PackageViewDescriptorImpl.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/PackageViewDescriptorImpl.java index 3df6f522d2c..f743376c0f2 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/PackageViewDescriptorImpl.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/PackageViewDescriptorImpl.java @@ -16,7 +16,6 @@ package org.jetbrains.jet.lang.descriptors.impl; -import com.google.common.collect.Lists; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.*; @@ -26,6 +25,7 @@ import org.jetbrains.jet.lang.resolve.scopes.ChainedScope; import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.types.TypeSubstitutor; +import java.util.ArrayList; import java.util.List; public class PackageViewDescriptorImpl extends DeclarationDescriptorImpl implements PackageViewDescriptor { @@ -42,7 +42,7 @@ public class PackageViewDescriptorImpl extends DeclarationDescriptorImpl impleme this.module = module; this.fqName = fqName; - List scopes = Lists.newArrayList(); + List scopes = new ArrayList(fragments.size() + 1); assert !fragments.isEmpty() : fqName + " in " + module; for (PackageFragmentDescriptor fragment : fragments) { scopes.add(fragment.getMemberScope()); diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/PropertyDescriptorImpl.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/PropertyDescriptorImpl.java index f113aeb9716..11a400fc28c 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/PropertyDescriptorImpl.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/PropertyDescriptorImpl.java @@ -16,7 +16,6 @@ package org.jetbrains.jet.lang.descriptors.impl; -import com.google.common.collect.Lists; import com.google.common.collect.Sets; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -31,6 +30,7 @@ import org.jetbrains.jet.lang.types.TypeSubstitutor; import org.jetbrains.jet.lang.types.Variance; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Set; @@ -102,7 +102,7 @@ public class PropertyDescriptorImpl extends VariableDescriptorImpl implements Pr ) { setOutType(outType); - this.typeParameters = Lists.newArrayList(typeParameters); + this.typeParameters = new ArrayList(typeParameters); this.receiverParameter = receiverParameter; this.expectedThisObject = expectedThisObject; @@ -182,14 +182,14 @@ public class PropertyDescriptorImpl extends VariableDescriptorImpl implements Pr @Override @NotNull public List getAccessors() { - List r = Lists.newArrayListWithCapacity(2); + List result = new ArrayList(2); if (getter != null) { - r.add(getter); + result.add(getter); } if (setter != null) { - r.add(setter); + result.add(setter); } - return r; + return result; } @Override @@ -212,8 +212,11 @@ public class PropertyDescriptorImpl extends VariableDescriptorImpl implements Pr ) { PropertyDescriptorImpl substitutedDescriptor = createSubstitutedCopy(newOwner, newModality, newVisibility, original, kind); - List substitutedTypeParameters = Lists.newArrayList(); - TypeSubstitutor substitutor = DescriptorSubstitutor.substituteTypeParameters(getTypeParameters(), originalSubstitutor, substitutedDescriptor, substitutedTypeParameters); + List originalTypeParameters = getTypeParameters(); + List substitutedTypeParameters = new ArrayList(originalTypeParameters.size()); + TypeSubstitutor substitutor = DescriptorSubstitutor.substituteTypeParameters( + originalTypeParameters, originalSubstitutor, substitutedDescriptor, substitutedTypeParameters + ); JetType originalOutType = getType(); JetType outType = substitutor.substitute(originalOutType, Variance.OUT_VARIANCE); diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/SubpackagesScope.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/SubpackagesScope.java index fc4baafd4aa..679ae061d54 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/SubpackagesScope.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/SubpackagesScope.java @@ -16,7 +16,6 @@ package org.jetbrains.jet.lang.descriptors.impl; -import com.google.common.collect.Lists; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -27,6 +26,7 @@ import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.scopes.JetScopeImpl; import org.jetbrains.jet.utils.Printer; +import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -53,8 +53,9 @@ public class SubpackagesScope extends JetScopeImpl { @NotNull @Override public Collection getAllDescriptors() { - List result = Lists.newArrayList(); - for (FqName subFqName : packageView.getModule().getPackageFragmentProvider().getSubPackagesOf(packageView.getFqName())) { + Collection subFqNames = packageView.getModule().getPackageFragmentProvider().getSubPackagesOf(packageView.getFqName()); + List result = new ArrayList(subFqNames.size()); + for (FqName subFqName : subFqNames) { ContainerUtil.addIfNotNull(result, getPackage(subFqName.shortName())); } return result; diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/OverridingUtil.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/OverridingUtil.java index 1d8f8a87093..4237e799674 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/OverridingUtil.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/OverridingUtil.java @@ -16,7 +16,6 @@ package org.jetbrains.jet.lang.resolve; -import com.google.common.collect.Lists; import com.google.common.collect.Sets; import com.intellij.util.containers.ContainerUtil; import kotlin.Function1; @@ -268,7 +267,7 @@ public class OverridingUtil { @NotNull ClassDescriptor current, @NotNull DescriptorSink sink ) { - Collection bound = Lists.newArrayList(); + Collection bound = new ArrayList(descriptorsFromSuper.size()); for (CallableMemberDescriptor fromSupertype : descriptorsFromSuper) { OverrideCompatibilityInfo.Result result = DEFAULT.isOverridableBy(fromSupertype, fromCurrent).getResult(); @@ -392,7 +391,7 @@ public class OverridingUtil { @NotNull Queue extractFrom, @NotNull DescriptorSink sink ) { - Collection overridable = Lists.newArrayList(); + Collection overridable = new ArrayList(); overridable.add(overrider); for (Iterator iterator = extractFrom.iterator(); iterator.hasNext(); ) { CallableMemberDescriptor candidate = iterator.next(); diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/calls/inference/ConstraintPosition.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/calls/inference/ConstraintPosition.java index 6f6c64dc201..113d93abbfa 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/calls/inference/ConstraintPosition.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/calls/inference/ConstraintPosition.java @@ -16,12 +16,12 @@ package org.jetbrains.jet.lang.resolve.calls.inference; -import com.google.common.collect.Lists; import com.google.common.collect.Maps; import kotlin.Function1; import kotlin.KotlinPackage; import org.jetbrains.annotations.NotNull; +import java.util.Arrays; import java.util.Collection; import java.util.Map; @@ -75,7 +75,7 @@ public class ConstraintPosition { } public static ConstraintPosition getCompoundConstraintPosition(ConstraintPosition... positions) { - return new CompoundConstraintPosition(Lists.newArrayList(positions)); + return new CompoundConstraintPosition(Arrays.asList(positions)); } private final String debugName; diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/calls/inference/ConstraintSystemImpl.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/calls/inference/ConstraintSystemImpl.java index 3503cf254ad..0e4893773cd 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/calls/inference/ConstraintSystemImpl.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/calls/inference/ConstraintSystemImpl.java @@ -16,7 +16,6 @@ package org.jetbrains.jet.lang.resolve.calls.inference; -import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import kotlin.Function1; @@ -31,7 +30,7 @@ import org.jetbrains.jet.lang.types.checker.TypingConstraints; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.utils.UtilsPackage; -import java.util.Collection; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; @@ -444,7 +443,7 @@ public class ConstraintSystemImpl implements ConstraintSystem { TypeBoundsImpl typeBounds = entry.getValue(); for (JetType declaredUpperBound : typeParameterDescriptor.getUpperBounds()) { //todo order matters here - Collection bounds = Lists.newArrayList(typeBounds.getBounds()); + Collection bounds = new ArrayList(typeBounds.getBounds()); for (Bound bound : bounds) { if (bound.kind == LOWER_BOUND || bound.kind == EXACT_BOUND) { ConstraintPosition position = ConstraintPosition.getCompoundConstraintPosition( @@ -514,10 +513,10 @@ public class ConstraintSystemImpl implements ConstraintSystem { List typeArguments = functionType.getArguments(); assert !typeArguments.isEmpty(); - List arguments = Lists.newArrayList(); // excluding the last type argument of the function type, which is the return type int index = 0; int lastIndex = typeArguments.size() - 1; + List arguments = new ArrayList(lastIndex); for (TypeProjection typeArgument : typeArguments) { if (index < lastIndex) { arguments.add(typeArgument.getType()); diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/calls/inference/TypeBoundsImpl.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/calls/inference/TypeBoundsImpl.java index 9bdddc97fc8..2e87d672590 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/calls/inference/TypeBoundsImpl.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/calls/inference/TypeBoundsImpl.java @@ -16,7 +16,6 @@ package org.jetbrains.jet.lang.resolve.calls.inference; -import com.google.common.collect.Lists; import com.google.common.collect.Sets; import com.intellij.util.containers.ContainerUtil; import kotlin.Function1; @@ -28,10 +27,7 @@ import org.jetbrains.jet.lang.resolve.constants.IntegerValueTypeConstructor; import org.jetbrains.jet.lang.types.*; import org.jetbrains.jet.lang.types.checker.JetTypeChecker; -import java.util.Collection; -import java.util.Collections; -import java.util.LinkedHashSet; -import java.util.Set; +import java.util.*; import static org.jetbrains.jet.lang.resolve.calls.inference.TypeBounds.BoundKind.LOWER_BOUND; @@ -191,7 +187,8 @@ public class TypeBoundsImpl implements TypeBounds { if (superTypeOfLowerBounds != null && superTypeOfNumberLowerBounds != null) { JetType superTypeOfAllLowerBounds = CommonSupertypes.commonSupertypeForNonDenotableTypes( - Lists.newArrayList(superTypeOfLowerBounds, superTypeOfNumberLowerBounds)); + Arrays.asList(superTypeOfLowerBounds, superTypeOfNumberLowerBounds) + ); if (tryPossibleAnswer(superTypeOfAllLowerBounds)) { return Collections.singleton(superTypeOfAllLowerBounds); } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/IntegerValueTypeConstructor.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/IntegerValueTypeConstructor.java index 0032cb75697..ced9000bcd9 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/IntegerValueTypeConstructor.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/IntegerValueTypeConstructor.java @@ -16,7 +16,6 @@ package org.jetbrains.jet.lang.resolve.constants; -import com.google.common.collect.Lists; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.ClassifierDescriptor; @@ -26,13 +25,14 @@ import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.TypeConstructor; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; public class IntegerValueTypeConstructor implements TypeConstructor { private final long value; - private final Collection supertypes = Lists.newArrayList(); + private final Collection supertypes = new ArrayList(4); public IntegerValueTypeConstructor(long value) { // order of types matters diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/name/FqName.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/name/FqName.java index ac17bfdf420..552f9e8bfc2 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/name/FqName.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/name/FqName.java @@ -16,10 +16,10 @@ package org.jetbrains.jet.lang.resolve.name; -import com.google.common.collect.Lists; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.utils.UtilsPackage; +import java.util.ArrayList; import java.util.List; public final class FqName extends FqNameBase { @@ -116,7 +116,7 @@ public final class FqName extends FqNameBase { @NotNull public List path() { - final List path = Lists.newArrayList(); + final List path = new ArrayList(); path.add(ROOT); fqName.walk(new FqNameUnsafe.WalkCallback() { @Override diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/name/FqNameUnsafe.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/name/FqNameUnsafe.java index c660913e076..39fa87f2ae3 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/name/FqNameUnsafe.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/name/FqNameUnsafe.java @@ -16,11 +16,11 @@ package org.jetbrains.jet.lang.resolve.name; -import com.google.common.collect.Lists; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.utils.UtilsPackage; +import java.util.ArrayList; import java.util.List; /** @@ -170,7 +170,7 @@ public final class FqNameUnsafe extends FqNameBase { @NotNull public List path() { - final List path = Lists.newArrayList(); + final List path = new ArrayList(); path.add(FqName.ROOT.toUnsafe()); walk(new WalkCallback() { @Override @@ -184,7 +184,7 @@ public final class FqNameUnsafe extends FqNameBase { @Override @NotNull public List pathSegments() { - final List path = Lists.newArrayList(); + final List path = new ArrayList(); walk(new WalkCallback() { @Override public void segment(@NotNull Name shortName, @NotNull FqNameUnsafe fqName) { diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/ChainedScope.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/ChainedScope.java index ed45580869b..d39c6d84f04 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/ChainedScope.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/ChainedScope.java @@ -16,7 +16,6 @@ package org.jetbrains.jet.lang.resolve.scopes; -import com.google.common.collect.Lists; import com.google.common.collect.Sets; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.TestOnly; @@ -24,7 +23,10 @@ import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.utils.Printer; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Set; import static org.jetbrains.jet.lang.resolve.scopes.JetScopeSelectorUtil.*; @@ -73,10 +75,12 @@ public class ChainedScope implements JetScope { @Override public List getImplicitReceiversHierarchy() { if (implicitReceiverHierarchy == null) { - implicitReceiverHierarchy = Lists.newArrayList(); + ArrayList result = new ArrayList(); for (JetScope jetScope : scopeChain) { - implicitReceiverHierarchy.addAll(jetScope.getImplicitReceiversHierarchy()); + result.addAll(jetScope.getImplicitReceiversHierarchy()); } + result.trimToSize(); + implicitReceiverHierarchy = result; } return implicitReceiverHierarchy; } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/types/TypeSubstitutor.java b/core/descriptors/src/org/jetbrains/jet/lang/types/TypeSubstitutor.java index 25dd82cc83d..47b44f8f80c 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/types/TypeSubstitutor.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/types/TypeSubstitutor.java @@ -16,7 +16,6 @@ package org.jetbrains.jet.lang.types; -import com.google.common.collect.Lists; import com.intellij.openapi.progress.ProcessCanceledException; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -24,6 +23,7 @@ import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor; import org.jetbrains.jet.lang.resolve.scopes.SubstitutingScope; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -192,9 +192,10 @@ public class TypeSubstitutor { } } - private List substituteTypeArguments(List typeParameters, List typeArguments, int recursionDepth) - throws SubstitutionException { - List substitutedArguments = Lists.newArrayList(); + private List substituteTypeArguments( + List typeParameters, List typeArguments, int recursionDepth + ) throws SubstitutionException { + List substitutedArguments = new ArrayList(typeParameters.size()); for (int i = 0; i < typeParameters.size(); i++) { TypeParameterDescriptor typeParameter = typeParameters.get(i); TypeProjection typeArgument = typeArguments.get(i); diff --git a/core/descriptors/src/org/jetbrains/jet/lang/types/TypeUtils.java b/core/descriptors/src/org/jetbrains/jet/lang/types/TypeUtils.java index 41425cec654..71ad8ed003e 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/types/TypeUtils.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/types/TypeUtils.java @@ -16,7 +16,6 @@ package org.jetbrains.jet.lang.types; -import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import kotlin.Function1; @@ -139,7 +138,7 @@ public class TypeUtils { } public static boolean isIntersectionEmpty(@NotNull JetType typeA, @NotNull JetType typeB) { - return intersect(JetTypeChecker.DEFAULT, Sets.newLinkedHashSet(Lists.newArrayList(typeA, typeB))) == null; + return intersect(JetTypeChecker.DEFAULT, Sets.newLinkedHashSet(Arrays.asList(typeA, typeB))) == null; } @Nullable @@ -156,7 +155,7 @@ public class TypeUtils { // made nullable is they all were nullable boolean allNullable = true; boolean nothingTypePresent = false; - List nullabilityStripped = Lists.newArrayList(); + List nullabilityStripped = new ArrayList(types.size()); for (JetType type : types) { nothingTypePresent |= KotlinBuiltIns.getInstance().isNothingOrNullableNothing(type); allNullable &= type.isNullable(); @@ -168,7 +167,7 @@ public class TypeUtils { } // Now we remove types that have subtypes in the list - List resultingTypes = Lists.newArrayList(); + List resultingTypes = new ArrayList(); outer: for (JetType type : nullabilityStripped) { if (!canHaveSubtypes(typeChecker, type)) { @@ -372,21 +371,18 @@ public class TypeUtils { return result; } - private static void collectImmediateSupertypes(@NotNull JetType type, @NotNull Collection result) { + @NotNull + public static List getImmediateSupertypes(@NotNull JetType type) { boolean isNullable = type.isNullable(); TypeSubstitutor substitutor = TypeSubstitutor.create(type); - for (JetType supertype : type.getConstructor().getSupertypes()) { + Collection originalSupertypes = type.getConstructor().getSupertypes(); + List result = new ArrayList(originalSupertypes.size()); + for (JetType supertype : originalSupertypes) { JetType substitutedType = substitutor.substitute(supertype, Variance.INVARIANT); if (substitutedType != null) { result.add(makeNullableIfNeeded(substitutedType, isNullable)); } } - } - - @NotNull - public static List getImmediateSupertypes(@NotNull JetType type) { - List result = Lists.newArrayList(); - collectImmediateSupertypes(type, result); return result; } @@ -617,8 +613,9 @@ public class TypeUtils { @Override public Iterable getNeighbors(JetType current) { TypeSubstitutor substitutor = TypeSubstitutor.create(current); - List result = Lists.newArrayList(); - for (JetType supertype : current.getConstructor().getSupertypes()) { + Collection supertypes = current.getConstructor().getSupertypes(); + List result = new ArrayList(supertypes.size()); + for (JetType supertype : supertypes) { if (visited.contains(supertype.getConstructor())) { continue; } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java b/core/descriptors/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java index 99db82af859..33dea602a66 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java @@ -17,7 +17,6 @@ package org.jetbrains.jet.lang.types.lang; import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Lists; import kotlin.KotlinPackage; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -783,13 +782,14 @@ public class KotlinBuiltIns { @NotNull public List getValueParameters(@NotNull FunctionDescriptor functionDescriptor, @NotNull JetType type) { assert isFunctionOrExtensionFunctionType(type); - List valueParameters = Lists.newArrayList(); List parameterTypes = getParameterTypeProjectionsFromFunctionType(type); + List valueParameters = new ArrayList(parameterTypes.size()); for (int i = 0; i < parameterTypes.size(); i++) { TypeProjection parameterType = parameterTypes.get(i); ValueParameterDescriptorImpl valueParameterDescriptor = new ValueParameterDescriptorImpl( functionDescriptor, null, i, Annotations.EMPTY, - Name.identifier("p" + (i + 1)), parameterType.getType(), false, null, SourceElement.NO_SOURCE); + Name.identifier("p" + (i + 1)), parameterType.getType(), false, null, SourceElement.NO_SOURCE + ); valueParameters.add(valueParameterDescriptor); } return valueParameters; @@ -808,7 +808,7 @@ public class KotlinBuiltIns { List arguments = type.getArguments(); int first = isExtensionFunctionType(type) ? 1 : 0; int last = arguments.size() - 2; - List parameterTypes = Lists.newArrayList(); + List parameterTypes = new ArrayList(last - first + 1); for (int i = first; i <= last; i++) { parameterTypes.add(arguments.get(i)); } diff --git a/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java b/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java index db32e79254f..61fbf23fa44 100644 --- a/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java +++ b/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java @@ -16,7 +16,6 @@ package org.jetbrains.jet.renderer; -import com.google.common.collect.Lists; import com.google.common.collect.Sets; import kotlin.Function1; import kotlin.KotlinPackage; @@ -248,7 +247,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer { return klass.getTypeConstructor().toString(); } if (shortNames) { - List qualifiedNameElements = Lists.newArrayList(); + List qualifiedNameElements = new ArrayList(); // for nested classes qualified name should be used DeclarationDescriptor current = klass; @@ -415,8 +414,9 @@ public class DescriptorRendererImpl implements DescriptorRenderer { @NotNull private List renderAndSortAnnotationArguments(@NotNull AnnotationDescriptor descriptor) { - List resultList = Lists.newArrayList(); - for (Map.Entry> entry : descriptor.getAllValueArguments().entrySet()) { + Set>> valueArguments = descriptor.getAllValueArguments().entrySet(); + List resultList = new ArrayList(valueArguments.size()); + for (Map.Entry> entry : valueArguments) { CompileTimeConstant value = entry.getValue(); String typeSuffix = ": " + renderType(value.getType(KotlinBuiltIns.getInstance())); resultList.add(entry.getKey().getName().asString() + " = " + renderConstant(value) + typeSuffix); @@ -665,7 +665,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer { private void renderWhereSuffix(@NotNull List typeParameters, @NotNull StringBuilder builder) { if (withoutTypeParameters) return; - List upperBoundStrings = Lists.newArrayList(); + List upperBoundStrings = new ArrayList(0); for (TypeParameterDescriptor typeParameter : typeParameters) { if (typeParameter.getUpperBounds().size() > 1) {