[Misc] Introduce helper-method 'IntersectionTypeConstructor.createType()'
This commit is contained in:
@@ -23,7 +23,6 @@ import org.jetbrains.annotations.Nullable;
|
|||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
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.Annotations;
|
|
||||||
import org.jetbrains.kotlin.resolve.calls.inference.CallHandle;
|
import org.jetbrains.kotlin.resolve.calls.inference.CallHandle;
|
||||||
import org.jetbrains.kotlin.resolve.calls.inference.ConstraintSystem;
|
import org.jetbrains.kotlin.resolve.calls.inference.ConstraintSystem;
|
||||||
import org.jetbrains.kotlin.resolve.calls.inference.ConstraintSystemBuilderImpl;
|
import org.jetbrains.kotlin.resolve.calls.inference.ConstraintSystemBuilderImpl;
|
||||||
@@ -132,15 +131,7 @@ public class TypeIntersector {
|
|||||||
return TypeUtils.makeNullableAsSpecified(resultingTypes.get(0), allNullable);
|
return TypeUtils.makeNullableAsSpecified(resultingTypes.get(0), allNullable);
|
||||||
}
|
}
|
||||||
|
|
||||||
IntersectionTypeConstructor constructor = new IntersectionTypeConstructor(resultingTypes);
|
return new IntersectionTypeConstructor(resultingTypes).createType();
|
||||||
|
|
||||||
return KotlinTypeFactory.simpleTypeWithNonTrivialMemberScope(
|
|
||||||
Annotations.Companion.getEMPTY(),
|
|
||||||
constructor,
|
|
||||||
Collections.emptyList(),
|
|
||||||
allNullable,
|
|
||||||
constructor.createScopeForKotlinType()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.types
|
|||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
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.Annotations
|
||||||
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
||||||
import org.jetbrains.kotlin.resolve.scopes.TypeIntersectionScope
|
import org.jetbrains.kotlin.resolve.scopes.TypeIntersectionScope
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@@ -60,6 +61,11 @@ class IntersectionTypeConstructor(typesToIntersect: Collection<KotlinType>) : Ty
|
|||||||
return intersectedTypes == other.intersectedTypes
|
return intersectedTypes == other.intersectedTypes
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun createType(): SimpleType =
|
||||||
|
KotlinTypeFactory.simpleTypeWithNonTrivialMemberScope(
|
||||||
|
Annotations.EMPTY, this, listOf(), false, this.createScopeForKotlinType()
|
||||||
|
)
|
||||||
|
|
||||||
override fun hashCode(): Int = hashCode
|
override fun hashCode(): Int = hashCode
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,4 +86,4 @@ inline fun IntersectionTypeConstructor.transformComponents(
|
|||||||
if (!changed) return null
|
if (!changed) return null
|
||||||
|
|
||||||
return IntersectionTypeConstructor(newSupertypes)
|
return IntersectionTypeConstructor(newSupertypes)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -127,13 +127,7 @@ private fun KotlinType.makeIntersectionTypeDefinitelyNotNullOrNotNull(): SimpleT
|
|||||||
val typeConstructor = constructor as? IntersectionTypeConstructor ?: return null
|
val typeConstructor = constructor as? IntersectionTypeConstructor ?: return null
|
||||||
val definitelyNotNullConstructor = typeConstructor.makeDefinitelyNotNullOrNotNull() ?: return null
|
val definitelyNotNullConstructor = typeConstructor.makeDefinitelyNotNullOrNotNull() ?: return null
|
||||||
|
|
||||||
return KotlinTypeFactory.simpleTypeWithNonTrivialMemberScope(
|
return definitelyNotNullConstructor.createType()
|
||||||
annotations,
|
|
||||||
definitelyNotNullConstructor,
|
|
||||||
listOf(),
|
|
||||||
false,
|
|
||||||
definitelyNotNullConstructor.createScopeForKotlinType()
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun IntersectionTypeConstructor.makeDefinitelyNotNullOrNotNull(): IntersectionTypeConstructor? {
|
private fun IntersectionTypeConstructor.makeDefinitelyNotNullOrNotNull(): IntersectionTypeConstructor? {
|
||||||
|
|||||||
@@ -16,7 +16,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.types.checker
|
package org.jetbrains.kotlin.types.checker
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
|
||||||
import org.jetbrains.kotlin.resolve.constants.IntegerLiteralTypeConstructor
|
import org.jetbrains.kotlin.resolve.constants.IntegerLiteralTypeConstructor
|
||||||
import org.jetbrains.kotlin.types.*
|
import org.jetbrains.kotlin.types.*
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@@ -119,14 +118,7 @@ object TypeIntersector {
|
|||||||
|
|
||||||
if (filteredSuperAndEqualTypes.size < 2) return filteredSuperAndEqualTypes.single()
|
if (filteredSuperAndEqualTypes.size < 2) return filteredSuperAndEqualTypes.single()
|
||||||
|
|
||||||
val constructor = IntersectionTypeConstructor(inputTypes)
|
return IntersectionTypeConstructor(inputTypes).createType()
|
||||||
return KotlinTypeFactory.simpleTypeWithNonTrivialMemberScope(
|
|
||||||
Annotations.EMPTY,
|
|
||||||
constructor,
|
|
||||||
listOf(),
|
|
||||||
false,
|
|
||||||
constructor.createScopeForKotlinType()
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun filterTypes(
|
private fun filterTypes(
|
||||||
|
|||||||
@@ -111,13 +111,8 @@ class NewKotlinTypeCheckerImpl() : NewKotlinTypeChecker {
|
|||||||
|
|
||||||
is IntersectionTypeConstructor -> if (type.isMarkedNullable) {
|
is IntersectionTypeConstructor -> if (type.isMarkedNullable) {
|
||||||
val newConstructor = constructor.transformComponents(transform = { it.makeNullable() }) ?: constructor
|
val newConstructor = constructor.transformComponents(transform = { it.makeNullable() }) ?: constructor
|
||||||
return KotlinTypeFactory.simpleTypeWithNonTrivialMemberScope(
|
return newConstructor.createType()
|
||||||
type.annotations,
|
|
||||||
newConstructor,
|
|
||||||
listOf(),
|
|
||||||
false,
|
|
||||||
newConstructor.createScopeForKotlinType()
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user