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
@NotNull
public ClassifierDescriptor getDeclarationDescriptor() {
return LazyClassDescriptor.this;
}
@@ -17,12 +17,14 @@
package org.jetbrains.kotlin.descriptors.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor;
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor;
import org.jetbrains.kotlin.descriptors.SourceElement;
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor;
import org.jetbrains.kotlin.descriptors.annotations.Annotations;
import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt;
import org.jetbrains.kotlin.storage.StorageManager;
import org.jetbrains.kotlin.types.JetType;
import org.jetbrains.kotlin.types.TypeConstructor;
@@ -82,6 +84,12 @@ public abstract class AbstractLazyTypeParameterDescriptor extends AbstractTypePa
return AbstractLazyTypeParameterDescriptor.this.getAnnotations();
}
@NotNull
@Override
public KotlinBuiltIns getBuiltIns() {
return DescriptorUtilsKt.getBuiltIns(AbstractLazyTypeParameterDescriptor.this);
}
@Override
public String toString() {
return getName().toString();
@@ -51,6 +51,8 @@ public class CapturedTypeConstructor(
override fun getAnnotations() = Annotations.EMPTY
override fun toString() = "CapturedTypeConstructor($typeProjection)"
override fun getBuiltIns(): KotlinBuiltIns = typeProjection.type.constructor.builtIns
}
public class CapturedType(
@@ -17,14 +17,11 @@
package org.jetbrains.kotlin.resolve.constants
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
import org.jetbrains.kotlin.descriptors.annotations.Annotations
import org.jetbrains.kotlin.types.JetType
import org.jetbrains.kotlin.types.TypeConstructor
import java.util.ArrayList
import java.util.Collections
import java.util.*
public class IntegerValueTypeConstructor(
private val value: Long,
@@ -62,5 +59,9 @@ public class IntegerValueTypeConstructor(
public fun getValue(): Long = value
override fun getBuiltIns(): KotlinBuiltIns {
return builtIns
}
override fun toString() = "IntegerValueType(" + value + ")"
}
@@ -17,10 +17,13 @@
package org.jetbrains.kotlin.types;
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.ClassifierDescriptor;
import org.jetbrains.kotlin.name.FqNameUnsafe;
import org.jetbrains.kotlin.resolve.DescriptorUtils;
import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt;
public abstract class AbstractClassTypeConstructor implements TypeConstructor {
private boolean hashCodeComputed;
@@ -35,6 +38,16 @@ public abstract class AbstractClassTypeConstructor implements TypeConstructor {
return hashCode;
}
@NotNull
@Override
public abstract ClassifierDescriptor getDeclarationDescriptor();
@NotNull
@Override
public KotlinBuiltIns getBuiltIns() {
return DescriptorUtilsKt.getBuiltIns(getDeclarationDescriptor());
}
@Override
@SuppressWarnings("EqualsWhichDoesntCheckParameterClass")
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.NoLookupLocation;
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.JetScope;
import org.jetbrains.kotlin.storage.LockBasedStorageManager;
@@ -635,6 +636,12 @@ public class ErrorUtils {
public Annotations getAnnotations() {
return errorTypeConstructor.getAnnotations();
}
@NotNull
@Override
public KotlinBuiltIns getBuiltIns() {
return DescriptorUtilsKt.getBuiltIns(typeParameterDescriptor);
}
}
public static boolean isFunctionPlaceholder(@Nullable JetType type) {
@@ -706,6 +713,12 @@ public class ErrorUtils {
public String toString() {
return errorTypeConstructor.toString();
}
@NotNull
@Override
public KotlinBuiltIns getBuiltIns() {
return errorTypeConstructor.getBuiltIns();
}
}
private ErrorUtils() {}
@@ -17,6 +17,7 @@
package org.jetbrains.kotlin.types;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor;
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor;
import org.jetbrains.kotlin.descriptors.annotations.AnnotatedImpl;
@@ -63,6 +64,12 @@ public class IntersectionTypeConstructor extends AnnotatedImpl implements TypeCo
return null;
}
@NotNull
@Override
public KotlinBuiltIns getBuiltIns() {
return intersectedTypes.iterator().next().getConstructor().getBuiltIns();
}
@Override
public String toString() {
return makeDebugNameForIntersectionType(intersectedTypes);
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.types;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.ReadOnly;
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor;
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor;
import org.jetbrains.kotlin.descriptors.annotations.Annotated;
@@ -48,4 +49,7 @@ public interface TypeConstructor extends Annotated {
@Nullable
ClassifierDescriptor getDeclarationDescriptor();
@NotNull
KotlinBuiltIns getBuiltIns();
}
@@ -18,11 +18,13 @@ package org.jetbrains.kotlin.types;
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.ClassifierDescriptor;
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor;
import org.jetbrains.kotlin.descriptors.annotations.AnnotatedImpl;
import org.jetbrains.kotlin.descriptors.annotations.Annotations;
import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt;
import java.util.ArrayList;
import java.util.Collection;
@@ -84,7 +86,7 @@ public abstract class TypeConstructorImpl extends AnnotatedImpl implements TypeC
private final ClassifierDescriptor classifierDescriptor;
private TypeConstructorImpl(
@Nullable ClassifierDescriptor classifierDescriptor,
@NotNull ClassifierDescriptor classifierDescriptor,
@NotNull Annotations annotations,
boolean isFinal,
@NotNull String debugName,
@@ -131,6 +133,12 @@ public abstract class TypeConstructorImpl extends AnnotatedImpl implements TypeC
return classifierDescriptor;
}
@NotNull
@Override
public KotlinBuiltIns getBuiltIns() {
return DescriptorUtilsKt.getBuiltIns(classifierDescriptor);
}
@Override
public abstract int hashCode();