From 65b5cdbb8df3909ca40a816f57d105072f5d0b36 Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Wed, 13 Dec 2017 14:00:14 +0300 Subject: [PATCH] Maintain bounds evaluation order in intrinsics for 'reversed' Makes sense for 'rangeTo', 'downTo', and 'until' with non-const bounds. --- .../range/DownToProgressionRangeValue.kt | 5 ++- .../PrimitiveNumberRangeLiteralRangeValue.kt | 5 ++- .../range/PrimitiveNumberUntilRangeValue.kt | 5 ++- .../ForInSimpleProgressionLoopGenerator.kt | 33 +++++++++++++++---- .../forInReversedDownToEvaluationOrder.kt | 20 +++++++++++ ...orInReversedRangeLiteralEvaluationOrder.kt | 20 +++++++++++ .../forInReversedUntilEvaluationOrder.kt | 20 +++++++++++ .../ir/IrBlackBoxCodegenTestGenerated.java | 27 +++++++++++++++ .../codegen/BlackBoxCodegenTestGenerated.java | 27 +++++++++++++++ .../LightAnalysisModeTestGenerated.java | 27 +++++++++++++++ .../semantics/JsCodegenBoxTestGenerated.java | 27 +++++++++++++++ 11 files changed, 206 insertions(+), 10 deletions(-) create mode 100644 compiler/testData/codegen/box/ranges/forInReversed/evaluationOrder/forInReversedDownToEvaluationOrder.kt create mode 100644 compiler/testData/codegen/box/ranges/forInReversed/evaluationOrder/forInReversedRangeLiteralEvaluationOrder.kt create mode 100644 compiler/testData/codegen/box/ranges/forInReversed/evaluationOrder/forInReversedUntilEvaluationOrder.kt diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/range/DownToProgressionRangeValue.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/range/DownToProgressionRangeValue.kt index 3c11fea4cd5..791af0da77e 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/range/DownToProgressionRangeValue.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/range/DownToProgressionRangeValue.kt @@ -43,7 +43,10 @@ class DownToProgressionRangeValue(rangeCall: ResolvedCall