Вы можете сделать:
fun List<Int>.asRange(): IntRange {
val range = first()..last()
if (range.toList() != this) {
throw IllegalStateException("list is not continuous.")
}
return range
}
Вызывается так:
listOf(1, 2, 3, 4, 5).asRange() //OK
listOf(1, 2, 2, 4, 5).asRange() //NOK
listOf(1, 1).asRange() //NOK