Introduce TypeConstructor#getBuiltIns

This commit is contained in:
Pavel V. Talanov
2015-09-16 13:17:56 +03:00
parent 896e1d8bc9
commit 22c250778e
9 changed files with 62 additions and 5 deletions
@@ -664,6 +664,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
} }
@Override @Override
@NotNull
public ClassifierDescriptor getDeclarationDescriptor() { public ClassifierDescriptor getDeclarationDescriptor() {
return LazyClassDescriptor.this; return LazyClassDescriptor.this;
} }
@@ -17,12 +17,14 @@
package org.jetbrains.kotlin.descriptors.impl; package org.jetbrains.kotlin.descriptors.impl;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor; import org.jetbrains.kotlin.descriptors.ClassifierDescriptor;
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor; import org.jetbrains.kotlin.descriptors.DeclarationDescriptor;
import org.jetbrains.kotlin.descriptors.SourceElement; import org.jetbrains.kotlin.descriptors.SourceElement;
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor; import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor;
import org.jetbrains.kotlin.descriptors.annotations.Annotations; import org.jetbrains.kotlin.descriptors.annotations.Annotations;
import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt;
import org.jetbrains.kotlin.storage.StorageManager; import org.jetbrains.kotlin.storage.StorageManager;
import org.jetbrains.kotlin.types.JetType; import org.jetbrains.kotlin.types.JetType;
import org.jetbrains.kotlin.types.TypeConstructor; import org.jetbrains.kotlin.types.TypeConstructor;
@@ -82,6 +84,12 @@ public abstract class AbstractLazyTypeParameterDescriptor extends AbstractTypePa
return AbstractLazyTypeParameterDescriptor.this.getAnnotations(); return AbstractLazyTypeParameterDescriptor.this.getAnnotations();
} }
@NotNull
@Override
public KotlinBuiltIns getBuiltIns() {
return DescriptorUtilsKt.getBuiltIns(AbstractLazyTypeParameterDescriptor.this);
}
@Override @Override
public String toString() { public String toString() {
return getName().toString(); return getName().toString();
@@ -51,6 +51,8 @@ public class CapturedTypeConstructor(
override fun getAnnotations() = Annotations.EMPTY override fun getAnnotations() = Annotations.EMPTY
override fun toString() = "CapturedTypeConstructor($typeProjection)" override fun toString() = "CapturedTypeConstructor($typeProjection)"
override fun getBuiltIns(): KotlinBuiltIns = typeProjection.type.constructor.builtIns
} }
public class CapturedType( public class CapturedType(
@@ -17,14 +17,11 @@
package org.jetbrains.kotlin.resolve.constants package org.jetbrains.kotlin.resolve.constants
import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.descriptors.annotations.Annotations
import org.jetbrains.kotlin.types.JetType import org.jetbrains.kotlin.types.JetType
import org.jetbrains.kotlin.types.TypeConstructor import org.jetbrains.kotlin.types.TypeConstructor
import java.util.*
import java.util.ArrayList
import java.util.Collections
public class IntegerValueTypeConstructor( public class IntegerValueTypeConstructor(
private val value: Long, private val value: Long,
@@ -62,5 +59,9 @@ public class IntegerValueTypeConstructor(
public fun getValue(): Long = value public fun getValue(): Long = value
override fun getBuiltIns(): KotlinBuiltIns {
return builtIns
}
override fun toString() = "IntegerValueType(" + value + ")" override fun toString() = "IntegerValueType(" + value + ")"
} }
@@ -17,10 +17,13 @@
package org.jetbrains.kotlin.types; package org.jetbrains.kotlin.types;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
import org.jetbrains.kotlin.descriptors.ClassDescriptor; import org.jetbrains.kotlin.descriptors.ClassDescriptor;
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor; import org.jetbrains.kotlin.descriptors.ClassifierDescriptor;
import org.jetbrains.kotlin.name.FqNameUnsafe; import org.jetbrains.kotlin.name.FqNameUnsafe;
import org.jetbrains.kotlin.resolve.DescriptorUtils; import org.jetbrains.kotlin.resolve.DescriptorUtils;
import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt;
public abstract class AbstractClassTypeConstructor implements TypeConstructor { public abstract class AbstractClassTypeConstructor implements TypeConstructor {
private boolean hashCodeComputed; private boolean hashCodeComputed;
@@ -35,6 +38,16 @@ public abstract class AbstractClassTypeConstructor implements TypeConstructor {
return hashCode; return hashCode;
} }
@NotNull
@Override
public abstract ClassifierDescriptor getDeclarationDescriptor();
@NotNull
@Override
public KotlinBuiltIns getBuiltIns() {
return DescriptorUtilsKt.getBuiltIns(getDeclarationDescriptor());
}
@Override @Override
@SuppressWarnings("EqualsWhichDoesntCheckParameterClass") @SuppressWarnings("EqualsWhichDoesntCheckParameterClass")
public boolean equals(Object obj) { public boolean equals(Object obj) {
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.descriptors.impl.*;
import org.jetbrains.kotlin.incremental.components.LookupLocation; import org.jetbrains.kotlin.incremental.components.LookupLocation;
import org.jetbrains.kotlin.incremental.components.NoLookupLocation; import org.jetbrains.kotlin.incremental.components.NoLookupLocation;
import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt;
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter; import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter;
import org.jetbrains.kotlin.resolve.scopes.JetScope; import org.jetbrains.kotlin.resolve.scopes.JetScope;
import org.jetbrains.kotlin.storage.LockBasedStorageManager; import org.jetbrains.kotlin.storage.LockBasedStorageManager;
@@ -635,6 +636,12 @@ public class ErrorUtils {
public Annotations getAnnotations() { public Annotations getAnnotations() {
return errorTypeConstructor.getAnnotations(); return errorTypeConstructor.getAnnotations();
} }
@NotNull
@Override
public KotlinBuiltIns getBuiltIns() {
return DescriptorUtilsKt.getBuiltIns(typeParameterDescriptor);
}
} }
public static boolean isFunctionPlaceholder(@Nullable JetType type) { public static boolean isFunctionPlaceholder(@Nullable JetType type) {
@@ -706,6 +713,12 @@ public class ErrorUtils {
public String toString() { public String toString() {
return errorTypeConstructor.toString(); return errorTypeConstructor.toString();
} }
@NotNull
@Override
public KotlinBuiltIns getBuiltIns() {
return errorTypeConstructor.getBuiltIns();
}
} }
private ErrorUtils() {} private ErrorUtils() {}
@@ -17,6 +17,7 @@
package org.jetbrains.kotlin.types; package org.jetbrains.kotlin.types;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor; import org.jetbrains.kotlin.descriptors.ClassifierDescriptor;
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor; import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor;
import org.jetbrains.kotlin.descriptors.annotations.AnnotatedImpl; import org.jetbrains.kotlin.descriptors.annotations.AnnotatedImpl;
@@ -63,6 +64,12 @@ public class IntersectionTypeConstructor extends AnnotatedImpl implements TypeCo
return null; return null;
} }
@NotNull
@Override
public KotlinBuiltIns getBuiltIns() {
return intersectedTypes.iterator().next().getConstructor().getBuiltIns();
}
@Override @Override
public String toString() { public String toString() {
return makeDebugNameForIntersectionType(intersectedTypes); return makeDebugNameForIntersectionType(intersectedTypes);
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.types;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.ReadOnly; import org.jetbrains.annotations.ReadOnly;
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor; import org.jetbrains.kotlin.descriptors.ClassifierDescriptor;
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor; import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor;
import org.jetbrains.kotlin.descriptors.annotations.Annotated; import org.jetbrains.kotlin.descriptors.annotations.Annotated;
@@ -48,4 +49,7 @@ public interface TypeConstructor extends Annotated {
@Nullable @Nullable
ClassifierDescriptor getDeclarationDescriptor(); ClassifierDescriptor getDeclarationDescriptor();
@NotNull
KotlinBuiltIns getBuiltIns();
} }
@@ -18,11 +18,13 @@ package org.jetbrains.kotlin.types;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
import org.jetbrains.kotlin.descriptors.ClassDescriptor; import org.jetbrains.kotlin.descriptors.ClassDescriptor;
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor; import org.jetbrains.kotlin.descriptors.ClassifierDescriptor;
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor; import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor;
import org.jetbrains.kotlin.descriptors.annotations.AnnotatedImpl; import org.jetbrains.kotlin.descriptors.annotations.AnnotatedImpl;
import org.jetbrains.kotlin.descriptors.annotations.Annotations; import org.jetbrains.kotlin.descriptors.annotations.Annotations;
import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
@@ -84,7 +86,7 @@ public abstract class TypeConstructorImpl extends AnnotatedImpl implements TypeC
private final ClassifierDescriptor classifierDescriptor; private final ClassifierDescriptor classifierDescriptor;
private TypeConstructorImpl( private TypeConstructorImpl(
@Nullable ClassifierDescriptor classifierDescriptor, @NotNull ClassifierDescriptor classifierDescriptor,
@NotNull Annotations annotations, @NotNull Annotations annotations,
boolean isFinal, boolean isFinal,
@NotNull String debugName, @NotNull String debugName,
@@ -131,6 +133,12 @@ public abstract class TypeConstructorImpl extends AnnotatedImpl implements TypeC
return classifierDescriptor; return classifierDescriptor;
} }
@NotNull
@Override
public KotlinBuiltIns getBuiltIns() {
return DescriptorUtilsKt.getBuiltIns(classifierDescriptor);
}
@Override @Override
public abstract int hashCode(); public abstract int hashCode();