From 7ba73c1635e62c164b76efb58c508835390459f6 Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Mon, 11 Dec 2017 15:03:47 +0300 Subject: [PATCH] Intrinsics for 'reversed': collection.indices #KT-21323 In Progress --- .../codegen/range/CollectionIndicesRangeValue.kt | 10 +++++++++- .../forInReversedCollectionIndices.kt | 13 +++++++++++++ .../forInReversedCollectionIndices.kt | 15 +++++++++++++++ .../ir/IrBlackBoxCodegenTestGenerated.java | 6 ++++++ .../codegen/BlackBoxCodegenTestGenerated.java | 6 ++++++ .../kotlin/codegen/BytecodeTextTestGenerated.java | 6 ++++++ .../codegen/LightAnalysisModeTestGenerated.java | 6 ++++++ .../test/semantics/JsCodegenBoxTestGenerated.java | 6 ++++++ 8 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/codegen/box/ranges/forInReversed/forInReversedCollectionIndices.kt create mode 100644 compiler/testData/codegen/bytecodeText/forLoop/forInReversed/forInReversedCollectionIndices.kt diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/range/CollectionIndicesRangeValue.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/range/CollectionIndicesRangeValue.kt index 0a8cce772d8..61546905463 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/range/CollectionIndicesRangeValue.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/range/CollectionIndicesRangeValue.kt @@ -19,6 +19,7 @@ package org.jetbrains.kotlin.codegen.range import org.jetbrains.kotlin.codegen.ExpressionCodegen import org.jetbrains.kotlin.codegen.StackValue import org.jetbrains.kotlin.codegen.generateCallReceiver +import org.jetbrains.kotlin.codegen.range.forLoop.ForInDefinitelySafeSimpleProgressionLoopGenerator import org.jetbrains.kotlin.codegen.range.forLoop.ForInSimpleProgressionLoopGenerator import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.psi.KtForExpression @@ -26,7 +27,9 @@ import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.org.objectweb.asm.Type -class CollectionIndicesRangeValue(rangeCall: ResolvedCall): PrimitiveNumberRangeIntrinsicRangeValue(rangeCall) { +class CollectionIndicesRangeValue(rangeCall: ResolvedCall) : + PrimitiveNumberRangeIntrinsicRangeValue(rangeCall), ReversableRangeValue { + private val expectedReceiverType: KotlinType = ExpressionCodegen.getExpectedReceiverType(rangeCall) override fun getBoundedValue(codegen: ExpressionCodegen) = @@ -43,4 +46,9 @@ class CollectionIndicesRangeValue(rangeCall: ResolvedCall