Minor: refactor getRangeOrProgressionElementType + reformat

This commit is contained in:
Dmitry Petrov
2018-12-25 15:30:21 +03:00
parent 6414abb277
commit fc94254320
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.psi.KtForExpression
import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
import org.jetbrains.kotlin.resolve.jvm.AsmTypes import org.jetbrains.kotlin.resolve.jvm.AsmTypes
import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.org.objectweb.asm.Type import org.jetbrains.org.objectweb.asm.Type
@@ -55,26 +56,26 @@ private fun getPrimitiveRangeOrProgressionElementType(
} }
fun getRangeOrProgressionElementType(rangeType: KotlinType): KotlinType? { fun getRangeOrProgressionElementType(rangeType: KotlinType): KotlinType? {
val rangeTypeDescriptor = rangeType.constructor.declarationDescriptor ?: return null val rangeClassDescriptor = rangeType.constructor.declarationDescriptor as? ClassDescriptor ?: return null
val builtIns = rangeTypeDescriptor.builtIns val builtIns = rangeClassDescriptor.builtIns
return when { return when (rangeClassDescriptor.fqNameSafe.asString()) {
rangeTypeDescriptor.isTopLevelInPackage("CharRange", "kotlin.ranges") -> builtIns.charType "kotlin.ranges.CharRange" -> builtIns.charType
rangeTypeDescriptor.isTopLevelInPackage("IntRange", "kotlin.ranges") -> builtIns.intType "kotlin.ranges.IntRange" -> builtIns.intType
rangeTypeDescriptor.isTopLevelInPackage("LongRange", "kotlin.ranges") -> builtIns.longType "kotlin.ranges.LongRange" -> builtIns.longType
rangeTypeDescriptor.isTopLevelInPackage("CharProgression", "kotlin.ranges") -> builtIns.charType "kotlin.ranges.CharProgression" -> builtIns.charType
rangeTypeDescriptor.isTopLevelInPackage("IntProgression", "kotlin.ranges") -> builtIns.intType "kotlin.ranges.IntProgression" -> builtIns.intType
rangeTypeDescriptor.isTopLevelInPackage("LongProgression", "kotlin.ranges") -> builtIns.longType "kotlin.ranges.LongProgression" -> builtIns.longType
rangeTypeDescriptor.isTopLevelInPackage("ClosedFloatRange", "kotlin.ranges") -> builtIns.floatType "kotlin.ranges.ClosedFloatRange" -> builtIns.floatType
rangeTypeDescriptor.isTopLevelInPackage("ClosedDoubleRange", "kotlin.ranges") -> builtIns.doubleType "kotlin.ranges.ClosedDoubleRange" -> builtIns.doubleType
rangeTypeDescriptor.isTopLevelInPackage("ClosedRange", "kotlin.ranges") -> rangeType.arguments.singleOrNull()?.type "kotlin.ranges.ClosedRange" -> rangeType.arguments.singleOrNull()?.type
rangeTypeDescriptor.isTopLevelInPackage("ClosedFloatingPointRange", "kotlin.ranges") -> rangeType.arguments.singleOrNull()?.type "kotlin.ranges.ClosedFloatingPointRange" -> rangeType.arguments.singleOrNull()?.type
rangeTypeDescriptor.isTopLevelInPackage("ComparableRange", "kotlin.ranges") -> rangeType.arguments.singleOrNull()?.type "kotlin.ranges.ComparableRange" -> rangeType.arguments.singleOrNull()?.type
else -> null else -> null
} }