[JVM_IR] Rebase constructor stepping tests that are working as intended.

JVM_IR has consistent stepping behavior for secondary constructors
and init blocks. This change fixes the expectations for tests that
expect the less consistent JVM backend behavior.
This commit is contained in:
Mads Ager
2020-08-14 14:20:13 +02:00
committed by max-kammerer
parent 2c6b5c8847
commit a6f301e84a
7 changed files with 250 additions and 2 deletions
@@ -855,7 +855,6 @@ class ExpressionCodegen(
IrTypeOperator.INSTANCEOF -> {
expression.argument.accept(this, data).materializeAt(context.irBuiltIns.anyNType)
val type = typeMapper.boxType(typeOperand)
if (typeOperand.isReifiedTypeParameter) {
putReifiedOperationMarkerIfTypeIsReifiedParameter(typeOperand, ReifiedTypeInliner.OperationKind.IS)
v.instanceOf(type)
+186
View File
@@ -0,0 +1,186 @@
// FILE: test.kt
fun box() {
B()
C(1)
D()
E(1)
F()
G(1)
J()
K(1)
L()
M()
N(1)
O(1)
O(1, "1")
}
class B()
class C(val a: Int)
class D {
constructor()
}
class E {
constructor(i: Int)
}
class F {
constructor() {
val a = 1
}
}
class G {
constructor(i: Int) {
val a = 1
}
}
class J {
init {
val a = 1
}
}
class K(val i: Int) {
init {
val a = 1
}
}
class L {
constructor() {
val a = 1
}
init {
val a = 1
}
}
class M {
constructor(): this(1) {
val a = 1
}
constructor(i: Int) {
}
}
class N {
constructor(i: Int): this() {
val a = 1
}
constructor() {
}
}
class O<T>(i: T) {
constructor(i: Int, j: T): this(j) {
}
}
// JVM_IR consistently steps through constructor start line, constructor body constructor end line.
// JVM does not. The JVM behavior is unfortunate for instance for the L class above. Stepping through
// construction on the JVM will give the sequence 49, 52, 53, 49 which makes it unclear if the assignment
// on line 49 was carried out before or after the assignment in the init block. The JVM_IR sequence is
// 48, 52, 53, 54, 49, 50 which makes the sequence clear.
// In addition JVM_IR consistently steps on the init line and on the init end brace. The line numbers
// are there in the class file fro JVM, but there is no guarantee that there is an instruction to
// step on and sometimes there is no step on the end brace.
// LINENUMBERS
// test.kt:4 box
// test.kt:19 <init>
// test.kt:4 box
// test.kt:5 box
// test.kt:20 <init>
// test.kt:5 box
// test.kt:6 box
// test.kt:22 <init>
// test.kt:6 box
// test.kt:7 box
// test.kt:25 <init>
// test.kt:7 box
// test.kt:8 box
// LINENUMBERS JVM_IR
// test.kt:28 <init>
// LINENUMBERS
// test.kt:29 <init>
// LINENUMBERS JVM_IR
// test.kt:30 <init>
// LINENUMBERS
// test.kt:8 box
// test.kt:9 box
// LINENUMBERS JVM_IR
// test.kt:33 <init>
// LINENUMBERS
// test.kt:34 <init>
// LINENUMBERS JVM_IR
// test.kt:35 <init>
// LINENUMBERS
// test.kt:9 box
// test.kt:10 box
// test.kt:37 <init>
// test.kt:38 <init>
// test.kt:39 <init>
// test.kt:40 <init>
// LINENUMBERS JVM_IR
// test.kt:37 <init>
// LINENUMBERS
// test.kt:10 box
// test.kt:11 box
// test.kt:42 <init>
// test.kt:43 <init>
// test.kt:44 <init>
// test.kt:45 <init>
// LINENUMBERS JVM_IR
// test.kt:42 <init>
// LINENUMBERS
// test.kt:11 box
// test.kt:12 box
// LINENUMBERS JVM
// test.kt:49 <init>
// LINENUMBERS JVM_IR
// test.kt:48 <init>
// LINENUMBERS
// test.kt:52 <init>
// test.kt:53 <init>
// LINENUMBERS JVM_IR
// test.kt:54 <init>
// LINENUMBERS
// test.kt:49 <init>
// LINENUMBERS JVM_IR
// test.kt:50 <init>
// LINENUMBERS
// test.kt:12 box
// test.kt:13 box
// test.kt:57 <init>
// test.kt:61 <init>
// LINENUMBERS JVM_IR
// test.kt:62 <init>
// LINENUMBERS
// test.kt:58 <init>
// LINENUMBERS JVM_IR
// test.kt:59 <init>
// LINENUMBERS
// test.kt:13 box
// test.kt:14 box
// test.kt:65 <init>
// test.kt:69 <init>
// LINENUMBERS JVM_IR
// test.kt:70 <init>
// LINENUMBERS
// test.kt:66 <init>
// LINENUMBERS JVM_IR
// test.kt:67 <init>
// LINENUMBERS
// test.kt:14 box
// test.kt:15 box
// test.kt:72 <init>
// test.kt:15 box
// test.kt:16 box
// test.kt:73 <init>
// test.kt:72 <init>
// LINENUMBERS JVM
// test.kt:73 <init>
// LINENUMBERS JVM_IR
// test.kt:74 <init>
// LINENUMBERS
// test.kt:16 box
// test.kt:17 box
@@ -103,6 +103,12 @@ public class IrSteppingTestGenerated extends AbstractIrSteppingTest {
runTest("compiler/testData/debug/stepping/constructorCall.kt");
}
@Test
@TestMetadata("constructors.kt")
public void testConstructors() throws Exception {
runTest("compiler/testData/debug/stepping/constructors.kt");
}
@Test
@TestMetadata("defaultParameter.kt")
public void testDefaultParameter() throws Exception {
@@ -103,6 +103,12 @@ public class SteppingTestGenerated extends AbstractSteppingTest {
runTest("compiler/testData/debug/stepping/constructorCall.kt");
}
@Test
@TestMetadata("constructors.kt")
public void testConstructors() throws Exception {
runTest("compiler/testData/debug/stepping/constructors.kt");
}
@Test
@TestMetadata("defaultParameter.kt")
public void testDefaultParameter() throws Exception {
@@ -59,6 +59,14 @@ internal class KotlinOutputChecker(
val outDir = File(testDir)
var outFile = File(outDir, "$myTestName.out")
if (useIrBackend) {
val irBackendOutFile = File(outDir, "$myTestName.ir.out")
if (irBackendOutFile.exists()) {
outFile = irBackendOutFile
}
}
if (!outFile.exists()) {
if (SystemInfo.isWindows) {
val winOut = File(outDir, "$myTestName.win.out")
@@ -0,0 +1,44 @@
LineBreakpoint created at smartStepIntoConstructor.kt:7
LineBreakpoint created at smartStepIntoConstructor.kt:11
LineBreakpoint created at smartStepIntoConstructor.kt:15
LineBreakpoint created at smartStepIntoConstructor.kt:19
LineBreakpoint created at smartStepIntoConstructor.kt:23
LineBreakpoint created at smartStepIntoConstructor.kt:27
LineBreakpoint created at smartStepIntoConstructor.kt:31
LineBreakpoint created at smartStepIntoConstructor.kt:35
LineBreakpoint created at smartStepIntoConstructor.kt:39
LineBreakpoint created at smartStepIntoConstructor.kt:43
LineBreakpoint created at smartStepIntoConstructor.kt:47
LineBreakpoint created at smartStepIntoConstructor.kt:51
LineBreakpoint created at smartStepIntoConstructor.kt:55
Run Java
Connected to the target VM
smartStepIntoConstructor.kt:7
smartStepIntoConstructor.kt:59
smartStepIntoConstructor.kt:11
smartStepIntoConstructor.kt:60
smartStepIntoConstructor.kt:15
smartStepIntoConstructor.kt:62
smartStepIntoConstructor.kt:19
smartStepIntoConstructor.kt:65
smartStepIntoConstructor.kt:23
smartStepIntoConstructor.kt:68
smartStepIntoConstructor.kt:27
smartStepIntoConstructor.kt:73
smartStepIntoConstructor.kt:31
smartStepIntoConstructor.kt:77
smartStepIntoConstructor.kt:35
smartStepIntoConstructor.kt:82
smartStepIntoConstructor.kt:39
smartStepIntoConstructor.kt:88
smartStepIntoConstructor.kt:43
smartStepIntoConstructor.kt:97
smartStepIntoConstructor.kt:47
smartStepIntoConstructor.kt:105
smartStepIntoConstructor.kt:51
smartStepIntoConstructor.kt:112
smartStepIntoConstructor.kt:55
smartStepIntoConstructor.kt:113
Disconnected from the target VM
Process finished with exit code 0
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
LineBreakpoint created at smartStepIntoConstructor.kt:7
LineBreakpoint created at smartStepIntoConstructor.kt:11
LineBreakpoint created at smartStepIntoConstructor.kt:15