Skip to content

Commit a744ba1

Browse files
committed
FIXME: show generated code of regression
1 parent 36eeba1 commit a744ba1

File tree

2 files changed

+62
-39
lines changed

2 files changed

+62
-39
lines changed

compiler/test/dotty/tools/backend/jvm/DottyBytecodeTests.scala

Lines changed: 59 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1049,44 +1049,54 @@ class DottyBytecodeTests extends DottyBytecodeTest {
10491049
val m1Meth = getMethod(fooClass, "m1")
10501050

10511051
assertSameCode(m1Meth, List(
1052+
// FIXME regression accessing `::`, `Option` and `Tuple2` members.
10521053
VarOp(ALOAD, 1),
10531054
VarOp(ASTORE, 2),
10541055
VarOp(ALOAD, 2),
10551056
TypeOp(INSTANCEOF, "scala/collection/immutable/$colon$colon"),
1056-
Jump(IFEQ, Label(19)),
1057+
Jump(IFEQ, Label(28)),
1058+
Field(GETSTATIC, "scala/package$", "MODULE$", "Lscala/package$;"),
1059+
Invoke(INVOKEVIRTUAL, "scala/package$", "$colon$colon", "()Lscala/collection/immutable/$colon$colon$;", false),
10571060
VarOp(ALOAD, 2),
10581061
TypeOp(CHECKCAST, "scala/collection/immutable/$colon$colon"),
1062+
Invoke(INVOKEVIRTUAL, "scala/collection/immutable/$colon$colon$", "unapply", "(Lscala/collection/immutable/$colon$colon;)Lscala/Option;", false),
10591063
VarOp(ASTORE, 3),
10601064
VarOp(ALOAD, 3),
1061-
Invoke(INVOKEVIRTUAL, "scala/collection/immutable/$colon$colon", "next$access$1", "()Lscala/collection/immutable/List;", false),
1062-
VarOp(ASTORE, 4),
1065+
Invoke(INVOKEVIRTUAL, "scala/Option", "isEmpty", "()Z", false),
1066+
Jump(IFNE, Label(28)),
10631067
VarOp(ALOAD, 3),
1064-
Invoke(INVOKEVIRTUAL, "scala/collection/immutable/$colon$colon", "head", "()Ljava/lang/Object;", false),
1068+
Invoke(INVOKEVIRTUAL, "scala/Option", "get", "()Ljava/lang/Object;", false),
1069+
TypeOp(CHECKCAST, "scala/Tuple2"),
1070+
VarOp(ASTORE, 4),
1071+
VarOp(ALOAD, 4),
1072+
Invoke(INVOKEVIRTUAL, "scala/Tuple2", "_1", "()Ljava/lang/Object;", false),
10651073
Invoke(INVOKESTATIC, "scala/runtime/BoxesRunTime", "unboxToInt", "(Ljava/lang/Object;)I", false),
10661074
VarOp(ISTORE, 5),
10671075
VarOp(ALOAD, 4),
1076+
Invoke(INVOKEVIRTUAL, "scala/Tuple2", "_2", "()Ljava/lang/Object;", false),
1077+
TypeOp(CHECKCAST, "scala/collection/immutable/List"),
10681078
VarOp(ASTORE, 6),
10691079
VarOp(ILOAD, 5),
10701080
Op(IRETURN),
1071-
Label(19),
1081+
Label(28),
10721082
Field(GETSTATIC, "scala/package$", "MODULE$", "Lscala/package$;"),
10731083
Invoke(INVOKEVIRTUAL, "scala/package$", "Nil", "()Lscala/collection/immutable/Nil$;", false),
10741084
VarOp(ALOAD, 2),
10751085
VarOp(ASTORE, 7),
10761086
Op(DUP),
1077-
Jump(IFNONNULL, Label(31)),
1087+
Jump(IFNONNULL, Label(40)),
10781088
Op(POP),
10791089
VarOp(ALOAD, 7),
1080-
Jump(IFNULL, Label(36)),
1081-
Jump(GOTO, Label(40)),
1082-
Label(31),
1090+
Jump(IFNULL, Label(45)),
1091+
Jump(GOTO, Label(49)),
1092+
Label(40),
10831093
VarOp(ALOAD, 7),
10841094
Invoke(INVOKEVIRTUAL, "java/lang/Object", "equals", "(Ljava/lang/Object;)Z", false),
1085-
Jump(IFEQ, Label(40)),
1086-
Label(36),
1095+
Jump(IFEQ, Label(49)),
1096+
Label(45),
10871097
IntOp(BIPUSH, 20),
10881098
Op(IRETURN),
1089-
Label(40),
1099+
Label(49),
10901100
TypeOp(NEW, "scala/MatchError"),
10911101
Op(DUP),
10921102
VarOp(ALOAD, 2),
@@ -1099,45 +1109,57 @@ class DottyBytecodeTests extends DottyBytecodeTest {
10991109
val m2Meth = getMethod(fooClass, "m2")
11001110

11011111
assertSameCode(m2Meth, List(
1112+
// FIXME regression accessing `::`, `Option` and `Tuple2` members.
11021113
VarOp(ALOAD, 1),
11031114
VarOp(ASTORE, 2),
11041115
VarOp(ALOAD, 2),
11051116
TypeOp(INSTANCEOF, "scala/collection/immutable/$colon$colon"),
1106-
Jump(IFEQ, Label(42)),
1117+
Jump(IFEQ, Label(53)),
1118+
Field(GETSTATIC, "scala/package$", "MODULE$", "Lscala/package$;"),
1119+
Invoke(INVOKEVIRTUAL, "scala/package$", "$colon$colon", "()Lscala/collection/immutable/$colon$colon$;", false),
11071120
VarOp(ALOAD, 2),
11081121
TypeOp(CHECKCAST, "scala/collection/immutable/$colon$colon"),
1122+
Invoke(INVOKEVIRTUAL, "scala/collection/immutable/$colon$colon$", "unapply", "(Lscala/collection/immutable/$colon$colon;)Lscala/Option;", false),
11091123
VarOp(ASTORE, 3),
11101124
VarOp(ALOAD, 3),
1111-
Invoke(INVOKEVIRTUAL, "scala/collection/immutable/$colon$colon", "head", "()Ljava/lang/Object;", false),
1112-
Invoke(INVOKESTATIC, "scala/runtime/BoxesRunTime", "unboxToInt", "(Ljava/lang/Object;)I", false),
1113-
VarOp(ISTORE, 4),
1125+
Invoke(INVOKEVIRTUAL, "scala/Option", "isEmpty", "()Z", false),
1126+
Jump(IFNE, Label(53)),
11141127
VarOp(ALOAD, 3),
1115-
Invoke(INVOKEVIRTUAL, "scala/collection/immutable/$colon$colon", "next$access$1", "()Lscala/collection/immutable/List;", false),
1116-
VarOp(ASTORE, 5),
1128+
Invoke(INVOKEVIRTUAL, "scala/Option", "get", "()Ljava/lang/Object;", false),
1129+
TypeOp(CHECKCAST, "scala/Tuple2"),
1130+
VarOp(ASTORE, 4),
1131+
VarOp(ALOAD, 4),
1132+
Invoke(INVOKEVIRTUAL, "scala/Tuple2", "_1", "()Ljava/lang/Object;", false),
1133+
Invoke(INVOKESTATIC, "scala/runtime/BoxesRunTime", "unboxToInt", "(Ljava/lang/Object;)I", false),
1134+
VarOp(ISTORE, 5),
1135+
VarOp(ALOAD, 4),
1136+
Invoke(INVOKEVIRTUAL, "scala/Tuple2", "_2", "()Ljava/lang/Object;", false),
1137+
TypeOp(CHECKCAST, "scala/collection/immutable/List"),
1138+
VarOp(ASTORE, 6),
11171139
Op(ICONST_1),
1118-
VarOp(ILOAD, 4),
1119-
Jump(IF_ICMPNE, Label(19)),
1120-
Jump(GOTO, Label(28)),
1121-
Label(19),
1140+
VarOp(ILOAD, 5),
1141+
Jump(IF_ICMPNE, Label(30)),
1142+
Jump(GOTO, Label(39)),
1143+
Label(30),
11221144
Op(ICONST_2),
1123-
VarOp(ILOAD, 4),
1124-
Jump(IF_ICMPNE, Label(25)),
1125-
Jump(GOTO, Label(28)),
1126-
Label(25),
1127-
Jump(GOTO, Label(34)),
1128-
Label(28),
1129-
VarOp(ALOAD, 5),
1130-
VarOp(ASTORE, 6),
1145+
VarOp(ILOAD, 5),
1146+
Jump(IF_ICMPNE, Label(36)),
1147+
Jump(GOTO, Label(39)),
1148+
Label(36),
1149+
Jump(GOTO, Label(45)),
1150+
Label(39),
1151+
VarOp(ALOAD, 6),
1152+
VarOp(ASTORE, 7),
11311153
IntOp(BIPUSH, 10),
11321154
Op(IRETURN),
1133-
Label(34),
1134-
VarOp(ILOAD, 4),
1135-
VarOp(ISTORE, 7),
1136-
VarOp(ALOAD, 5),
1137-
VarOp(ASTORE, 8),
1138-
VarOp(ILOAD, 7),
1155+
Label(45),
1156+
VarOp(ILOAD, 5),
1157+
VarOp(ISTORE, 8),
1158+
VarOp(ALOAD, 6),
1159+
VarOp(ASTORE, 9),
1160+
VarOp(ILOAD, 8),
11391161
Op(IRETURN),
1140-
Label(42),
1162+
Label(53),
11411163
IntOp(BIPUSH, 20),
11421164
Op(IRETURN),
11431165
))

project/Build.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -641,7 +641,7 @@ object Build {
641641
"-Ddotty.tests.classes.tastyCore=" + jars("tasty-core"),
642642
"-Ddotty.tests.classes.compilerInterface=" + findArtifactPath(externalDeps, "compiler-interface"),
643643
"-Ddotty.tests.classes.scalaLibrary=" + findArtifactPath(externalDeps, "scala-library"),
644-
"-Ddotty.tests.tasties.scalaLibrary=" + jars("stdlib-bootstrapped-tasty"),
644+
"-Ddotty.tests.tasties.scalaLibrary=" + jars("scala2-library-tasty"),
645645
"-Ddotty.tests.classes.scalaAsm=" + findArtifactPath(externalDeps, "scala-asm"),
646646
"-Ddotty.tests.classes.jlineTerminal=" + findArtifactPath(externalDeps, "jline-terminal"),
647647
"-Ddotty.tests.classes.jlineReader=" + findArtifactPath(externalDeps, "jline-reader"),
@@ -831,7 +831,7 @@ object Build {
831831
// library on the compiler classpath since the non-bootstrapped one
832832
// may not be binary-compatible.
833833
"scala3-library" -> (`scala3-library-bootstrapped` / Compile / packageBin).value,
834-
"stdlib-bootstrapped-tasty" -> (`stdlib-bootstrapped-tasty` / Compile / packageBin).value,
834+
"scala2-library-tasty" -> (`scala2-library-tasty` / Compile / packageBin).value,
835835
).mapValues(_.getAbsolutePath)
836836
}
837837
}.value,
@@ -1161,6 +1161,7 @@ object Build {
11611161
settings(commonBootstrappedSettings).
11621162
settings(
11631163
javaOptions := (`scala3-compiler-bootstrapped` / javaOptions).value,
1164+
scalacOptions += "-Ycheck:all",
11641165
Test / javaOptions += "-Ddotty.scala.library=" + (`scala2-library-bootstrapped` / Compile / packageBin).value.getAbsolutePath,
11651166
Compile / compile / fullClasspath ~= {
11661167
_.filterNot(file => file.data.getName == s"scala-library-$stdlibBootstrappedVersion.jar")

0 commit comments

Comments
 (0)