KT-32044 Fix unsigned integer coercion in loop intrinsics

This commit is contained in:
Dmitry Petrov
2019-06-20 16:11:06 +03:00
parent 0b580b2741
commit 79d4b46d2b
12 changed files with 200 additions and 16 deletions
@@ -50,6 +50,15 @@ object UnsignedTypes {
return isUnsignedClass(descriptor)
}
fun toUnsignedType(type: KotlinType): UnsignedType? =
when {
KotlinBuiltIns.isUByte(type) -> UnsignedType.UBYTE
KotlinBuiltIns.isUShort(type) -> UnsignedType.USHORT
KotlinBuiltIns.isUInt(type) -> UnsignedType.UINT
KotlinBuiltIns.isULong(type) -> UnsignedType.ULONG
else -> null
}
fun isUnsignedClass(descriptor: DeclarationDescriptor): Boolean {
val container = descriptor.containingDeclaration
return container is PackageFragmentDescriptor &&