diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/kotlinSignature/AlternativeMethodSignatureData.java b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/kotlinSignature/AlternativeMethodSignatureData.java index 9c9bf7c4293..106df48f360 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/kotlinSignature/AlternativeMethodSignatureData.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/kotlinSignature/AlternativeMethodSignatureData.java @@ -41,7 +41,10 @@ import org.jetbrains.kotlin.types.Variance; import org.jetbrains.kotlin.types.checker.JetTypeChecker; import org.jetbrains.kotlin.types.typeUtil.TypeUtilPackage; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; import static org.jetbrains.kotlin.load.java.components.TypeUsage.MEMBER_SIGNATURE_CONTRAVARIANT; import static org.jetbrains.kotlin.load.java.components.TypeUsage.UPPER_BOUND; @@ -188,8 +191,8 @@ public class AlternativeMethodSignatureData extends ElementAlternativeSignatureD parameterDescriptors.size(), altFunDeclaration.getValueParameters().size()); } - List altParamDescriptors = new ArrayList(); - for (int i = 0, size = parameterDescriptors.size(); i < size; i++) { + List altParamDescriptors = new ArrayList(parameterDescriptors.size()); + for (int i = 0; i < parameterDescriptors.size(); i++) { ValueParameterDescriptor originalParameterDescriptor = parameterDescriptors.get(i); JetParameter annotationValueParameter = altFunDeclaration.getValueParameters().get(i); @@ -231,7 +234,7 @@ public class AlternativeMethodSignatureData extends ElementAlternativeSignatureD originalParameterDescriptor.declaresDefaultValue(), alternativeVarargElementType, SourceElement.NO_SOURCE - )); + )); } altValueParameters = altParamDescriptors; @@ -243,9 +246,9 @@ public class AlternativeMethodSignatureData extends ElementAlternativeSignatureD typeParameters.size(), altFunDeclaration.getTypeParameters().size()); } - altTypeParameters = new ArrayList(); + altTypeParameters = new ArrayList(typeParameters.size()); - for (int i = 0, size = typeParameters.size(); i < size; i++) { + for (int i = 0; i < typeParameters.size(); i++) { TypeParameterDescriptor originalTypeParamDescriptor = typeParameters.get(i); TypeParameterDescriptorImpl altParamDescriptor = originalToAltTypeParameters.get(originalTypeParamDescriptor); diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/kotlinSignature/SignaturesPropagationData.java b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/kotlinSignature/SignaturesPropagationData.java index c9c6c6fed9e..3ed82d56375 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/kotlinSignature/SignaturesPropagationData.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/kotlinSignature/SignaturesPropagationData.java @@ -216,7 +216,7 @@ public class SignaturesPropagationData { DescriptorUtils.getFqName(containingClass); JetType resultReceiverType = null; - List resultParameters = Lists.newArrayList(); + List resultParameters = new ArrayList(parameters.size()); boolean shouldBeExtension = checkIfShouldBeExtension(); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/util/CallMaker.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/util/CallMaker.java index de74eacd22f..00a864b57d6 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/util/CallMaker.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/util/CallMaker.java @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.psi.Call.CallType; import org.jetbrains.kotlin.psi.debugText.DebugTextPackage; import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue; +import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -199,7 +200,7 @@ public class CallMaker { public static Call makeCallWithExpressions(@NotNull JetElement callElement, @NotNull ReceiverValue explicitReceiver, @Nullable ASTNode callOperationNode, @NotNull JetExpression calleeExpression, @NotNull List argumentExpressions, @NotNull CallType callType) { - List arguments = Lists.newArrayList(); + List arguments = new ArrayList(argumentExpressions.size()); for (JetExpression argumentExpression : argumentExpressions) { arguments.add(makeValueArgument(argumentExpression, calleeExpression)); } diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/typeEnhacement/typeEnhancement.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/typeEnhacement/typeEnhancement.kt index 2c426fd2844..1d82fd5d204 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/typeEnhacement/typeEnhancement.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/typeEnhacement/typeEnhancement.kt @@ -30,6 +30,7 @@ import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.platform.JavaToKotlinClassMap import org.jetbrains.kotlin.types.* import org.jetbrains.kotlin.types.typeUtil.createProjection +import org.jetbrains.kotlin.utils.toReadOnlyList // The index in the lambda is the position of the type component: // Example: for `A>`, indices go as follows: `0 - A<...>, 1 - B, 2 - C, 3 - D, 4 - E`, @@ -119,7 +120,7 @@ private fun JetType.enhanceInflexible(qualifiers: (Int) -> JavaTypeQualifiers, i private fun List.compositeAnnotationsOrSingle() = when (size()) { 0 -> error("At least one Annotations object expected") 1 -> single() - else -> CompositeAnnotations(this) + else -> CompositeAnnotations(this.toReadOnlyList()) } private fun TypeComponentPosition.shouldEnhance() = this != TypeComponentPosition.INFLEXIBLE diff --git a/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java b/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java index 720ab7c77a9..17645855ad0 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java +++ b/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java @@ -739,7 +739,7 @@ public class KotlinBuiltIns { @NotNull List parameterTypes, @NotNull JetType returnType ) { - List arguments = new ArrayList(); + List arguments = new ArrayList(parameterTypes.size() + (receiverType != null ? 1 : 0) + 1); if (receiverType != null) { arguments.add(defaultProjection(receiverType)); } diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/FunctionDescriptorImpl.java b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/FunctionDescriptorImpl.java index 83bf9c9cb37..ea5fa338e33 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/FunctionDescriptorImpl.java +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/FunctionDescriptorImpl.java @@ -302,23 +302,25 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo @NotNull List unsubstitutedValueParameters, @NotNull TypeSubstitutor substitutor ) { - List result = new ArrayList(); + List result = new ArrayList(unsubstitutedValueParameters.size()); for (ValueParameterDescriptor unsubstitutedValueParameter : unsubstitutedValueParameters) { // TODO : Lazy? JetType substitutedType = substitutor.substitute(unsubstitutedValueParameter.getType(), Variance.IN_VARIANCE); JetType varargElementType = unsubstitutedValueParameter.getVarargElementType(); - JetType substituteVarargElementType = varargElementType == null ? null : substitutor.substitute(varargElementType, Variance.IN_VARIANCE); + JetType substituteVarargElementType = + varargElementType == null ? null : substitutor.substitute(varargElementType, Variance.IN_VARIANCE); if (substitutedType == null) return null; - result.add(new ValueParameterDescriptorImpl( - substitutedDescriptor, - unsubstitutedValueParameter, - unsubstitutedValueParameter.getIndex(), - unsubstitutedValueParameter.getAnnotations(), - unsubstitutedValueParameter.getName(), - substitutedType, - unsubstitutedValueParameter.declaresDefaultValue(), - substituteVarargElementType, - SourceElement.NO_SOURCE + result.add( + new ValueParameterDescriptorImpl( + substitutedDescriptor, + unsubstitutedValueParameter, + unsubstitutedValueParameter.getIndex(), + unsubstitutedValueParameter.getAnnotations(), + unsubstitutedValueParameter.getName(), + substitutedType, + unsubstitutedValueParameter.declaresDefaultValue(), + substituteVarargElementType, + SourceElement.NO_SOURCE ) ); } diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/CommonSupertypes.java b/core/descriptors/src/org/jetbrains/kotlin/types/CommonSupertypes.java index 7460747c43c..3ee9d1a3548 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/CommonSupertypes.java +++ b/core/descriptors/src/org/jetbrains/kotlin/types/CommonSupertypes.java @@ -212,12 +212,11 @@ public class CommonSupertypes { } List parameters = constructor.getParameters(); - List newProjections = new ArrayList(); - for (int i = 0, parametersSize = parameters.size(); i < parametersSize; i++) { - TypeParameterDescriptor parameterDescriptor = parameters.get(i); + List newProjections = new ArrayList(parameters.size()); + for (TypeParameterDescriptor parameterDescriptor : parameters) { Set typeProjections = new HashSet(); for (JetType type : types) { - typeProjections.add(type.getArguments().get(i)); + typeProjections.add(type.getArguments().get(parameterDescriptor.getIndex())); } newProjections.add(computeSupertypeProjection(parameterDescriptor, typeProjections, recursionDepth, maxDepth)); } diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/TypeUtils.java b/core/descriptors/src/org/jetbrains/kotlin/types/TypeUtils.java index 87e9dc5a256..46d8a7c5a31 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/TypeUtils.java +++ b/core/descriptors/src/org/jetbrains/kotlin/types/TypeUtils.java @@ -425,12 +425,12 @@ public class TypeUtils { } @NotNull - public static List getDefaultTypeProjections(List parameters) { - List result = new ArrayList(); + public static List getDefaultTypeProjections(@NotNull List parameters) { + List result = new ArrayList(parameters.size()); for (TypeParameterDescriptor parameterDescriptor : parameters) { result.add(new TypeProjectionImpl(parameterDescriptor.getDefaultType())); } - return result; + return UtilsPackage.toReadOnlyList(result); } @NotNull