@@ -1049,44 +1049,54 @@ class DottyBytecodeTests extends DottyBytecodeTest {
1049
1049
val m1Meth = getMethod(fooClass, " m1" )
1050
1050
1051
1051
assertSameCode(m1Meth, List (
1052
+ // FIXME regression accessing `::`, `Option` and `Tuple2` members.
1052
1053
VarOp (ALOAD , 1 ),
1053
1054
VarOp (ASTORE , 2 ),
1054
1055
VarOp (ALOAD , 2 ),
1055
1056
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 ),
1057
1060
VarOp (ALOAD , 2 ),
1058
1061
TypeOp (CHECKCAST , " scala/collection/immutable/$colon$colon" ),
1062
+ Invoke (INVOKEVIRTUAL , " scala/collection/immutable/$colon$colon$" , " unapply" , " (Lscala/collection/immutable/$colon$colon;)Lscala/Option;" , false ),
1059
1063
VarOp (ASTORE , 3 ),
1060
1064
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 ) ),
1063
1067
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 ),
1065
1073
Invoke (INVOKESTATIC , " scala/runtime/BoxesRunTime" , " unboxToInt" , " (Ljava/lang/Object;)I" , false ),
1066
1074
VarOp (ISTORE , 5 ),
1067
1075
VarOp (ALOAD , 4 ),
1076
+ Invoke (INVOKEVIRTUAL , " scala/Tuple2" , " _2" , " ()Ljava/lang/Object;" , false ),
1077
+ TypeOp (CHECKCAST , " scala/collection/immutable/List" ),
1068
1078
VarOp (ASTORE , 6 ),
1069
1079
VarOp (ILOAD , 5 ),
1070
1080
Op (IRETURN ),
1071
- Label (19 ),
1081
+ Label (28 ),
1072
1082
Field (GETSTATIC , " scala/package$" , " MODULE$" , " Lscala/package$;" ),
1073
1083
Invoke (INVOKEVIRTUAL , " scala/package$" , " Nil" , " ()Lscala/collection/immutable/Nil$;" , false ),
1074
1084
VarOp (ALOAD , 2 ),
1075
1085
VarOp (ASTORE , 7 ),
1076
1086
Op (DUP ),
1077
- Jump (IFNONNULL , Label (31 )),
1087
+ Jump (IFNONNULL , Label (40 )),
1078
1088
Op (POP ),
1079
1089
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 ),
1083
1093
VarOp (ALOAD , 7 ),
1084
1094
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 ),
1087
1097
IntOp (BIPUSH , 20 ),
1088
1098
Op (IRETURN ),
1089
- Label (40 ),
1099
+ Label (49 ),
1090
1100
TypeOp (NEW , " scala/MatchError" ),
1091
1101
Op (DUP ),
1092
1102
VarOp (ALOAD , 2 ),
@@ -1099,45 +1109,57 @@ class DottyBytecodeTests extends DottyBytecodeTest {
1099
1109
val m2Meth = getMethod(fooClass, " m2" )
1100
1110
1101
1111
assertSameCode(m2Meth, List (
1112
+ // FIXME regression accessing `::`, `Option` and `Tuple2` members.
1102
1113
VarOp (ALOAD , 1 ),
1103
1114
VarOp (ASTORE , 2 ),
1104
1115
VarOp (ALOAD , 2 ),
1105
1116
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 ),
1107
1120
VarOp (ALOAD , 2 ),
1108
1121
TypeOp (CHECKCAST , " scala/collection/immutable/$colon$colon" ),
1122
+ Invoke (INVOKEVIRTUAL , " scala/collection/immutable/$colon$colon$" , " unapply" , " (Lscala/collection/immutable/$colon$colon;)Lscala/Option;" , false ),
1109
1123
VarOp (ASTORE , 3 ),
1110
1124
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 )),
1114
1127
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 ),
1117
1139
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 ),
1122
1144
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 ),
1131
1153
IntOp (BIPUSH , 10 ),
1132
1154
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 ),
1139
1161
Op (IRETURN ),
1140
- Label (42 ),
1162
+ Label (53 ),
1141
1163
IntOp (BIPUSH , 20 ),
1142
1164
Op (IRETURN ),
1143
1165
))
0 commit comments