Remove type capability AbbreviatedType.
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2015 JetBrains s.r.o.
|
* Copyright 2010-2016 JetBrains s.r.o.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -94,12 +94,12 @@ public class PossiblyBareType {
|
|||||||
|
|
||||||
KotlinType nullableActualType = TypeUtils.makeNullable(getActualType());
|
KotlinType nullableActualType = TypeUtils.makeNullable(getActualType());
|
||||||
|
|
||||||
KotlinType abbreviatedType = TypeCapabilitiesKt.getAbbreviatedType(getActualType());
|
KotlinType abbreviatedType = KotlinTypeKt.getAbbreviatedType(getActualType());
|
||||||
if (abbreviatedType == null) {
|
if (abbreviatedType == null) {
|
||||||
return type(nullableActualType);
|
return type(nullableActualType);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return type(TypeCapabilitiesKt.withAbbreviatedType(nullableActualType, TypeUtils.makeNullable(abbreviatedType)));
|
return type(KotlinTypeKt.withAbbreviatedType(KotlinTypeKt.asSimpleType(nullableActualType), KotlinTypeKt.asSimpleType(TypeUtils.makeNullable(abbreviatedType))));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -548,7 +548,7 @@ public class DescriptorSerializer {
|
|||||||
builder.setNullable(type.isMarkedNullable());
|
builder.setNullable(type.isMarkedNullable());
|
||||||
}
|
}
|
||||||
|
|
||||||
KotlinType abbreviatedType = TypeCapabilitiesKt.getAbbreviatedType(type);
|
KotlinType abbreviatedType = KotlinTypeKt.getAbbreviatedType(type);
|
||||||
if (abbreviatedType != null) {
|
if (abbreviatedType != null) {
|
||||||
if (useTypeTable()) {
|
if (useTypeTable()) {
|
||||||
builder.setAbbreviatedTypeId(typeId(abbreviatedType));
|
builder.setAbbreviatedTypeId(typeId(abbreviatedType));
|
||||||
|
|||||||
@@ -87,4 +87,10 @@ public abstract class AbstractKotlinType implements KotlinType, SimpleType { //
|
|||||||
|
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public SimpleType getAbbreviatedType() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,4 +91,10 @@ public abstract class DelegatingType implements KotlinType, SimpleType { // TODO
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
return getDelegate().toString();
|
return getDelegate().toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public SimpleType getAbbreviatedType() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -553,6 +553,12 @@ public class ErrorUtils {
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
return constructor.toString() + (arguments.isEmpty() ? "" : joinToString(arguments, ", ", "<", ">", -1, "...", null));
|
return constructor.toString() + (arguments.isEmpty() ? "" : joinToString(arguments, ", ", "<", ">", -1, "...", null));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public SimpleType getAbbreviatedType() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
@@ -54,7 +54,9 @@ fun KotlinType.unwrap(): KotlinType {
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
interface SimpleType : KotlinType
|
interface SimpleType : KotlinType {
|
||||||
|
val abbreviatedType : SimpleType? get() = null
|
||||||
|
}
|
||||||
|
|
||||||
interface TypeWithCustomReplacement : KotlinType {
|
interface TypeWithCustomReplacement : KotlinType {
|
||||||
fun makeNullableAsSpecified(nullable: Boolean): KotlinType
|
fun makeNullableAsSpecified(nullable: Boolean): KotlinType
|
||||||
@@ -111,6 +113,13 @@ fun SimpleType.lazyReplaceAnnotations(newAnnotations: Annotations): SimpleType {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun KotlinType.getAbbreviatedType(): SimpleType? = (unwrap() as? SimpleType)?.abbreviatedType
|
||||||
|
|
||||||
|
fun SimpleType.withAbbreviatedType(abbreviatedType: SimpleType): SimpleType {
|
||||||
|
if (isError) return this
|
||||||
|
return KotlinTypeImpl.create(annotations, constructor, isMarkedNullable, arguments, memberScope, capabilities, abbreviatedType)
|
||||||
|
}
|
||||||
|
|
||||||
private class WrappedSimpleType(
|
private class WrappedSimpleType(
|
||||||
override val delegate: SimpleType,
|
override val delegate: SimpleType,
|
||||||
val newAnnotations: Annotations? = null,
|
val newAnnotations: Annotations? = null,
|
||||||
@@ -124,7 +133,7 @@ private class WrappedSimpleType(
|
|||||||
|
|
||||||
override fun unwrap(): KotlinType {
|
override fun unwrap(): KotlinType {
|
||||||
if (delegate.isError) return delegate // todo
|
if (delegate.isError) return delegate // todo
|
||||||
return KotlinTypeImpl.create(annotations, constructor, isMarkedNullable, arguments, memberScope, capabilities)
|
return KotlinTypeImpl.create(annotations, constructor, isMarkedNullable, arguments, memberScope, capabilities, abbreviatedType)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun toString(): String {
|
override fun toString(): String {
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
|||||||
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
||||||
|
|
||||||
open class KotlinTypeImpl
|
open class KotlinTypeImpl
|
||||||
private constructor(
|
internal constructor(
|
||||||
override val annotations: Annotations,
|
override val annotations: Annotations,
|
||||||
final override val constructor: TypeConstructor,
|
final override val constructor: TypeConstructor,
|
||||||
override val isMarkedNullable: Boolean,
|
override val isMarkedNullable: Boolean,
|
||||||
@@ -45,10 +45,11 @@ private constructor(
|
|||||||
nullable: Boolean,
|
nullable: Boolean,
|
||||||
arguments: List<TypeProjection>,
|
arguments: List<TypeProjection>,
|
||||||
memberScope: MemberScope,
|
memberScope: MemberScope,
|
||||||
capabilities: TypeCapabilities
|
capabilities: TypeCapabilities,
|
||||||
|
abbreviatedType: SimpleType? = null
|
||||||
): KotlinTypeImpl {
|
): KotlinTypeImpl {
|
||||||
if (capabilities !== TypeCapabilities.NONE) {
|
if (capabilities !== TypeCapabilities.NONE || abbreviatedType != null) {
|
||||||
return WithCapabilities(annotations, constructor, nullable, arguments, memberScope, capabilities)
|
return WithCapabilities(annotations, constructor, nullable, arguments, memberScope, capabilities, abbreviatedType)
|
||||||
}
|
}
|
||||||
return KotlinTypeImpl(annotations, constructor, nullable, arguments, memberScope)
|
return KotlinTypeImpl(annotations, constructor, nullable, arguments, memberScope)
|
||||||
}
|
}
|
||||||
@@ -70,7 +71,8 @@ private constructor(
|
|||||||
nullable: Boolean,
|
nullable: Boolean,
|
||||||
arguments: List<TypeProjection>,
|
arguments: List<TypeProjection>,
|
||||||
memberScope: MemberScope,
|
memberScope: MemberScope,
|
||||||
override val capabilities: TypeCapabilities
|
override val capabilities: TypeCapabilities,
|
||||||
|
override val abbreviatedType: SimpleType?
|
||||||
) : KotlinTypeImpl(annotations, constructor, nullable, arguments, memberScope)
|
) : KotlinTypeImpl(annotations, constructor, nullable, arguments, memberScope)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
|||||||
@@ -47,14 +47,6 @@ fun <T : TypeCapability> TypeCapabilities.addCapability(clazz: Class<T>, typeCap
|
|||||||
return CompositeTypeCapabilities(this, newCapabilities)
|
return CompositeTypeCapabilities(this, newCapabilities)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <T : TypeCapability> TypeCapabilities.overrideCapability(clazz: Class<T>, typeCapability: T): TypeCapabilities {
|
|
||||||
if (getCapability(clazz) === typeCapability) return this
|
|
||||||
val newCapabilities = SingletonTypeCapabilities(clazz, typeCapability)
|
|
||||||
if (this === org.jetbrains.kotlin.types.TypeCapabilities.NONE) return newCapabilities
|
|
||||||
|
|
||||||
return CompositeTypeCapabilities(newCapabilities, this)
|
|
||||||
}
|
|
||||||
|
|
||||||
inline fun <reified T : TypeCapability> KotlinType.getCapability(): T? = getCapability(T::class.java)
|
inline fun <reified T : TypeCapability> KotlinType.getCapability(): T? = getCapability(T::class.java)
|
||||||
|
|
||||||
|
|
||||||
@@ -92,20 +84,3 @@ fun sameTypeConstructors(first: KotlinType, second: KotlinType): Boolean {
|
|||||||
|| (second.unwrap() as? SubtypingRepresentatives)?.sameTypeConstructor(first) ?: false
|
|| (second.unwrap() as? SubtypingRepresentatives)?.sameTypeConstructor(first) ?: false
|
||||||
}
|
}
|
||||||
|
|
||||||
interface AbbreviatedType : TypeCapability {
|
|
||||||
val abbreviatedType : KotlinType
|
|
||||||
}
|
|
||||||
|
|
||||||
fun KotlinType.hasAbbreviatedType(): Boolean =
|
|
||||||
getCapability(AbbreviatedType::class.java) != null
|
|
||||||
|
|
||||||
fun KotlinType.getAbbreviatedType(): KotlinType? =
|
|
||||||
getCapability(AbbreviatedType::class.java)?.abbreviatedType
|
|
||||||
|
|
||||||
private class AbbreviatedTypeImpl(override val abbreviatedType: KotlinType): AbbreviatedType
|
|
||||||
|
|
||||||
fun TypeCapabilities.withAbbreviatedType(abbreviatedType: KotlinType): TypeCapabilities =
|
|
||||||
overrideCapability(AbbreviatedType::class.java, AbbreviatedTypeImpl(abbreviatedType))
|
|
||||||
|
|
||||||
fun KotlinType.withAbbreviatedType(abbreviatedType: KotlinType): KotlinType =
|
|
||||||
if (!isError) replace(newCapabilities = capabilities.withAbbreviatedType(abbreviatedType)) else this
|
|
||||||
|
|||||||
@@ -93,6 +93,12 @@ public class TypeUtils {
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public SimpleType getAbbreviatedType() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
+4
-6
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.descriptors.annotations.AnnotationWithTarget
|
|||||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||||
import org.jetbrains.kotlin.serialization.ProtoBuf
|
import org.jetbrains.kotlin.serialization.ProtoBuf
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedAnnotationsWithPossibleTargets
|
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedAnnotationsWithPossibleTargets
|
||||||
|
import org.jetbrains.kotlin.storage.getValue
|
||||||
import org.jetbrains.kotlin.types.*
|
import org.jetbrains.kotlin.types.*
|
||||||
import org.jetbrains.kotlin.utils.toReadOnlyList
|
import org.jetbrains.kotlin.utils.toReadOnlyList
|
||||||
|
|
||||||
@@ -53,12 +54,9 @@ class DeserializedType(
|
|||||||
return descriptor != null && ErrorUtils.isError(descriptor)
|
return descriptor != null && ErrorUtils.isError(descriptor)
|
||||||
}
|
}
|
||||||
|
|
||||||
override val capabilities: TypeCapabilities get() = typeCapabilities()
|
override val abbreviatedType by c.storageManager.createNullableLazyValue {
|
||||||
|
val abbreviatedTypeProto = typeProto.abbreviatedType(c.typeTable) ?: return@createNullableLazyValue null
|
||||||
|
|
||||||
private val typeCapabilities = c.storageManager.createLazyValue {
|
c.typeDeserializer.type(abbreviatedTypeProto, additionalAnnotations).asSimpleType()
|
||||||
val abbreviatedTypeProto = typeProto.abbreviatedType(c.typeTable) ?: return@createLazyValue TypeCapabilities.NONE
|
|
||||||
|
|
||||||
val abbreviatedType = c.typeDeserializer.type(abbreviatedTypeProto, additionalAnnotations)
|
|
||||||
TypeCapabilities.NONE.withAbbreviatedType(abbreviatedType)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user