@@ -1197,58 +1197,57 @@ TEST_F(TypeTest, TestTypeRelations) {
1197
1197
Type i32 = Type::i32 ;
1198
1198
Type unreachable = Type::unreachable;
1199
1199
1200
- #define assertLUB (a, b, lub, glb ) \
1201
- { \
1202
- auto lub1 = Type::getLeastUpperBound (a, b); \
1203
- auto lub2 = Type::getLeastUpperBound (b, a); \
1204
- EXPECT_EQ (lub, lub1); \
1205
- EXPECT_EQ (lub1, lub2); \
1206
- if (lub != Type::none) { \
1207
- EXPECT_TRUE (Type::isSubType (a, lub)); \
1208
- EXPECT_TRUE (Type::isSubType (b, lub)); \
1209
- } \
1210
- auto glb1 = Type::getGreatestLowerBound (a, b); \
1211
- auto glb2 = Type::getGreatestLowerBound (b, a); \
1212
- EXPECT_EQ (glb, glb1); \
1213
- EXPECT_EQ (glb, glb2); \
1214
- EXPECT_TRUE (Type::isSubType (glb, a)); \
1215
- EXPECT_TRUE (Type::isSubType (glb, b)); \
1216
- if (a == b) { \
1217
- EXPECT_TRUE (Type::isSubType (a, b)); \
1218
- EXPECT_TRUE (Type::isSubType (b, a)); \
1219
- EXPECT_EQ (lub, a); \
1220
- EXPECT_EQ (glb, a); \
1221
- } else if (lub == b) { \
1222
- EXPECT_TRUE (Type::isSubType (a, b)); \
1223
- EXPECT_FALSE (Type::isSubType (b, a)); \
1224
- EXPECT_EQ (glb, a); \
1225
- } else if (lub == a) { \
1226
- EXPECT_FALSE (Type::isSubType (a, b)); \
1227
- EXPECT_TRUE (Type::isSubType (b, a)); \
1228
- EXPECT_EQ (glb, b); \
1229
- } else if (lub != Type::none) { \
1230
- EXPECT_FALSE (Type::isSubType (a, b)); \
1231
- EXPECT_FALSE (Type::isSubType (b, a)); \
1232
- EXPECT_NE (glb, a); \
1233
- EXPECT_NE (glb, b); \
1234
- } else { \
1235
- EXPECT_FALSE (Type::isSubType (a, b)); \
1236
- EXPECT_FALSE (Type::isSubType (b, a)); \
1237
- } \
1238
- \
1239
- if (a.isRef () && b.isRef ()) { \
1240
- auto htA = a.getHeapType (); \
1241
- auto htB = b.getHeapType (); \
1242
- \
1243
- if (lub == Type::none) { \
1244
- EXPECT_NE (htA.getTop (), htB.getTop ()); \
1245
- EXPECT_NE (htA.getBottom (), htB.getBottom ()); \
1246
- } else { \
1247
- EXPECT_EQ (htA.getTop (), htB.getTop ()); \
1248
- EXPECT_EQ (htA.getBottom (), htB.getBottom ()); \
1249
- } \
1250
- } \
1251
- }
1200
+ auto assertLUB = [](Type a, Type b, Type lub, Type glb) {
1201
+ auto lub1 = Type::getLeastUpperBound (a, b);
1202
+ auto lub2 = Type::getLeastUpperBound (b, a);
1203
+ EXPECT_EQ (lub, lub1);
1204
+ EXPECT_EQ (lub1, lub2);
1205
+ if (lub != Type::none) {
1206
+ EXPECT_TRUE (Type::isSubType (a, lub));
1207
+ EXPECT_TRUE (Type::isSubType (b, lub));
1208
+ }
1209
+ auto glb1 = Type::getGreatestLowerBound (a, b);
1210
+ auto glb2 = Type::getGreatestLowerBound (b, a);
1211
+ EXPECT_EQ (glb, glb1);
1212
+ EXPECT_EQ (glb, glb2);
1213
+ EXPECT_TRUE (Type::isSubType (glb, a));
1214
+ EXPECT_TRUE (Type::isSubType (glb, b));
1215
+ if (a == b) {
1216
+ EXPECT_TRUE (Type::isSubType (a, b));
1217
+ EXPECT_TRUE (Type::isSubType (b, a));
1218
+ EXPECT_EQ (lub, a);
1219
+ EXPECT_EQ (glb, a);
1220
+ } else if (lub == b) {
1221
+ EXPECT_TRUE (Type::isSubType (a, b));
1222
+ EXPECT_FALSE (Type::isSubType (b, a));
1223
+ EXPECT_EQ (glb, a);
1224
+ } else if (lub == a) {
1225
+ EXPECT_FALSE (Type::isSubType (a, b));
1226
+ EXPECT_TRUE (Type::isSubType (b, a));
1227
+ EXPECT_EQ (glb, b);
1228
+ } else if (lub != Type::none) {
1229
+ EXPECT_FALSE (Type::isSubType (a, b));
1230
+ EXPECT_FALSE (Type::isSubType (b, a));
1231
+ EXPECT_NE (glb, a);
1232
+ EXPECT_NE (glb, b);
1233
+ } else {
1234
+ EXPECT_FALSE (Type::isSubType (a, b));
1235
+ EXPECT_FALSE (Type::isSubType (b, a));
1236
+ }
1237
+
1238
+ if (a.isRef () && b.isRef ()) {
1239
+ auto htA = a.getHeapType ();
1240
+ auto htB = b.getHeapType ();
1241
+
1242
+ if (lub == Type::none) {
1243
+ EXPECT_NE (htA.getTop (), htB.getTop ());
1244
+ EXPECT_NE (htA.getBottom (), htB.getBottom ());
1245
+ } else {
1246
+ EXPECT_EQ (htA.getTop (), htB.getTop ());
1247
+ EXPECT_EQ (htA.getBottom (), htB.getBottom ());
1248
+ }
1249
+ }
1250
+ };
1252
1251
1253
1252
assertLUB (any, any, any, any);
1254
1253
assertLUB (any, nullAny, nullAny, any);
0 commit comments