From 53cc582040e41590c02e07284b62c0de3db021f9 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 20 Jun 2013 20:14:52 +0400 Subject: [PATCH] Minor, use incrementType in for-progression codegen This doesn't fix anything, just makes it easier to figure out values of what types are used where. Progression increment is of its own type, which may be different from asmElementType in case of Byte, Char, Short progressions --- .../src/org/jetbrains/jet/codegen/ExpressionCodegen.java | 6 +++--- .../ranges/forByteProgressionWithIntIncrement.kt | 7 +++++++ .../generated/BlackBoxWithStdlibCodegenTestGenerated.java | 5 +++++ .../org/jetbrains/jet/resolve/JetResolveTestGenerated.java | 2 +- 4 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 compiler/testData/codegen/boxWithStdlib/ranges/forByteProgressionWithIntIncrement.kt diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java index e62e277244f..1ece17f99fa 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java @@ -1068,12 +1068,12 @@ public class ExpressionCodegen extends JetVisitor implem v.load(loopParameterVar, asmElementType); v.load(endVar, asmElementType); - v.load(incrementVar, asmElementType); + v.load(incrementVar, incrementType); Label negativeIncrement = new Label(); Label afterIf = new Label(); - if (asmElementType.getSort() == Type.DOUBLE) { + if (incrementType.getSort() == Type.DOUBLE) { v.dconst(0.0); } else { @@ -1100,7 +1100,7 @@ public class ExpressionCodegen extends JetVisitor implem v.load(loopParameterVar, asmElementType); v.load(endVar, asmElementType); - v.load(incrementVar, asmElementType); + v.load(incrementVar, incrementType); Label negativeIncrement = new Label(); Label afterIf = new Label(); diff --git a/compiler/testData/codegen/boxWithStdlib/ranges/forByteProgressionWithIntIncrement.kt b/compiler/testData/codegen/boxWithStdlib/ranges/forByteProgressionWithIntIncrement.kt new file mode 100644 index 00000000000..ec16945a875 --- /dev/null +++ b/compiler/testData/codegen/boxWithStdlib/ranges/forByteProgressionWithIntIncrement.kt @@ -0,0 +1,7 @@ +fun box(): String { + for (element in 5.toByte()..1.toByte() step 255) { + return "Fail: iterating over an empty progression, element: $element" + } + + return "OK" +} diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java index 540c6ab73aa..e187758dbe1 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java @@ -403,6 +403,11 @@ public class BlackBoxWithStdlibCodegenTestGenerated extends AbstractBlackBoxCode JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/codegen/boxWithStdlib/ranges"), Pattern.compile("^(.+)\\.kt$"), true); } + @TestMetadata("forByteProgressionWithIntIncrement.kt") + public void testForByteProgressionWithIntIncrement() throws Exception { + doTestWithStdlib("compiler/testData/codegen/boxWithStdlib/ranges/forByteProgressionWithIntIncrement.kt"); + } + @TestMetadata("multiAssignmentIterationOverIntRange.kt") public void testMultiAssignmentIterationOverIntRange() throws Exception { doTestWithStdlib("compiler/testData/codegen/boxWithStdlib/ranges/multiAssignmentIterationOverIntRange.kt"); diff --git a/compiler/tests/org/jetbrains/jet/resolve/JetResolveTestGenerated.java b/compiler/tests/org/jetbrains/jet/resolve/JetResolveTestGenerated.java index faf1d4c2435..5b23f67300b 100644 --- a/compiler/tests/org/jetbrains/jet/resolve/JetResolveTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/resolve/JetResolveTestGenerated.java @@ -162,7 +162,7 @@ public class JetResolveTestGenerated extends AbstractResolveTest { public void testAllFilesPresentInCandidatesPriority() throws Exception { JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/resolve/candidatesPriority"), Pattern.compile("^(.+)\\.resolve$"), true); } - + @TestMetadata("classObjectOuterResolve.resolve") public void testClassObjectOuterResolve() throws Exception { doTest("compiler/testData/resolve/candidatesPriority/classObjectOuterResolve.resolve");