Skip to content

Commit def4095

Browse files
authored
[NFC] Use a lambda instead of a macro in gtest (#7395)
The length macro used in a type test in type-builder.cpp was causing extremely long compile times in some compilers. Use a lambda instead to fix it. This makes the error messages less useful when a test fails, but under normal circumstances the test should not be failing, so this is a good trade off. Fixes #7383.
1 parent 8958df4 commit def4095

File tree

1 file changed

+51
-52
lines changed

1 file changed

+51
-52
lines changed

test/gtest/type-builder.cpp

Lines changed: 51 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1197,58 +1197,57 @@ TEST_F(TypeTest, TestTypeRelations) {
11971197
Type i32 = Type::i32;
11981198
Type unreachable = Type::unreachable;
11991199

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+
};
12521251

12531252
assertLUB(any, any, any, any);
12541253
assertLUB(any, nullAny, nullAny, any);

0 commit comments

Comments
 (0)