TypeProjection interface extracted

This commit is contained in:
Andrey Breslav
2013-09-28 12:02:21 +02:00
parent b98ec9f56b
commit 3960426698
35 changed files with 167 additions and 115 deletions
@@ -27,6 +27,7 @@ import org.jetbrains.jet.lang.resolve.scopes.JetScope;
import org.jetbrains.jet.lang.types.JetType;
import org.jetbrains.jet.lang.types.JetTypeImpl;
import org.jetbrains.jet.lang.types.TypeProjection;
import org.jetbrains.jet.lang.types.TypeProjectionImpl;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import java.util.ArrayList;
@@ -95,17 +96,17 @@ public class FunctionTypesUtil {
List<TypeProjection> typeArguments = new ArrayList<TypeProjection>(arity + 2);
if (receiverParameter != null) {
typeArguments.add(new TypeProjection(receiverParameter.getType()));
typeArguments.add(new TypeProjectionImpl(receiverParameter.getType()));
}
else if (kFunction && expectedThisObject != null) {
typeArguments.add(new TypeProjection(expectedThisObject.getType()));
typeArguments.add(new TypeProjectionImpl(expectedThisObject.getType()));
}
for (ValueParameterDescriptor parameter : descriptor.getValueParameters()) {
typeArguments.add(new TypeProjection(parameter.getType()));
typeArguments.add(new TypeProjectionImpl(parameter.getType()));
}
typeArguments.add(new TypeProjection(descriptor.getReturnType()));
typeArguments.add(new TypeProjectionImpl(descriptor.getReturnType()));
ClassDescriptor classDescriptor;
if (kFunction) {
@@ -584,7 +584,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
private ClassifierDescriptor getSubstituteForTypeParameterOf(@NotNull ClassDescriptor trait, int index) {
TypeParameterDescriptor listTypeParameter = trait.getTypeConstructor().getParameters().get(index);
TypeSubstitutor deepSubstitutor = SubstitutionUtils.buildDeepSubstitutor(descriptor.getDefaultType());
TypeProjection substitute = deepSubstitutor.substitute(new TypeProjection(listTypeParameter.getDefaultType()));
TypeProjection substitute = deepSubstitutor.substitute(new TypeProjectionImpl(listTypeParameter.getDefaultType()));
assert substitute != null : "Couldn't substitute: " + descriptor;
ClassifierDescriptor classifier = substitute.getType().getConstructor().getDeclarationDescriptor();
assert classifier != null : "No classifier: " + substitute.getType();