mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-24 22:02:23 +01:00
Refactor Expression to use std::variant instead of a union (#586)
This commit is contained in:
@@ -13,7 +13,7 @@ TEST(ParenContentsTest, EmptyAsExpression) {
|
||||
ParenContents contents;
|
||||
const Expression* expression = contents.AsExpression(/*line_num=*/1);
|
||||
EXPECT_EQ(expression->line_num, 1);
|
||||
ASSERT_EQ(expression->tag, ExpressionKind::Tuple);
|
||||
ASSERT_EQ(expression->tag(), ExpressionKind::Tuple);
|
||||
EXPECT_EQ(expression->GetTuple().fields->size(), 0);
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ TEST(ParenContentsTest, EmptyAsTuple) {
|
||||
ParenContents contents;
|
||||
const Expression* tuple = contents.AsTuple(/*line_num=*/1);
|
||||
EXPECT_EQ(tuple->line_num, 1);
|
||||
ASSERT_EQ(tuple->tag, ExpressionKind::Tuple);
|
||||
ASSERT_EQ(tuple->tag(), ExpressionKind::Tuple);
|
||||
EXPECT_EQ(tuple->GetTuple().fields->size(), 0);
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ TEST(ParenContentsTest, UnaryNoCommaAsExpression) {
|
||||
|
||||
const Expression* expression = contents.AsExpression(/*line_num=*/1);
|
||||
EXPECT_EQ(expression->line_num, 2);
|
||||
ASSERT_EQ(expression->tag, ExpressionKind::Integer);
|
||||
ASSERT_EQ(expression->tag(), ExpressionKind::Integer);
|
||||
}
|
||||
|
||||
TEST(ParenContentsTest, UnaryNoCommaAsTuple) {
|
||||
@@ -48,10 +48,10 @@ TEST(ParenContentsTest, UnaryNoCommaAsTuple) {
|
||||
|
||||
const Expression* tuple = contents.AsTuple(/*line_num=*/1);
|
||||
EXPECT_EQ(tuple->line_num, 1);
|
||||
ASSERT_EQ(tuple->tag, ExpressionKind::Tuple);
|
||||
ASSERT_EQ(tuple->tag(), ExpressionKind::Tuple);
|
||||
std::vector<FieldInitializer> fields = *tuple->GetTuple().fields;
|
||||
ASSERT_EQ(fields.size(), 1);
|
||||
EXPECT_EQ(fields[0].expression->tag, ExpressionKind::Integer);
|
||||
EXPECT_EQ(fields[0].expression->tag(), ExpressionKind::Integer);
|
||||
}
|
||||
|
||||
TEST(ParenContentsTest, UnaryWithCommaAsExpression) {
|
||||
@@ -61,10 +61,10 @@ TEST(ParenContentsTest, UnaryWithCommaAsExpression) {
|
||||
|
||||
const Expression* expression = contents.AsExpression(/*line_num=*/1);
|
||||
EXPECT_EQ(expression->line_num, 1);
|
||||
ASSERT_EQ(expression->tag, ExpressionKind::Tuple);
|
||||
ASSERT_EQ(expression->tag(), ExpressionKind::Tuple);
|
||||
std::vector<FieldInitializer> fields = *expression->GetTuple().fields;
|
||||
ASSERT_EQ(fields.size(), 1);
|
||||
EXPECT_EQ(fields[0].expression->tag, ExpressionKind::Integer);
|
||||
EXPECT_EQ(fields[0].expression->tag(), ExpressionKind::Integer);
|
||||
}
|
||||
|
||||
TEST(ParenContentsTest, UnaryWithCommaAsTuple) {
|
||||
@@ -74,10 +74,10 @@ TEST(ParenContentsTest, UnaryWithCommaAsTuple) {
|
||||
|
||||
const Expression* tuple = contents.AsTuple(/*line_num=*/1);
|
||||
EXPECT_EQ(tuple->line_num, 1);
|
||||
ASSERT_EQ(tuple->tag, ExpressionKind::Tuple);
|
||||
ASSERT_EQ(tuple->tag(), ExpressionKind::Tuple);
|
||||
std::vector<FieldInitializer> fields = *tuple->GetTuple().fields;
|
||||
ASSERT_EQ(fields.size(), 1);
|
||||
EXPECT_EQ(fields[0].expression->tag, ExpressionKind::Integer);
|
||||
EXPECT_EQ(fields[0].expression->tag(), ExpressionKind::Integer);
|
||||
}
|
||||
|
||||
TEST(ParenContentsTest, BinaryAsExpression) {
|
||||
@@ -88,11 +88,11 @@ TEST(ParenContentsTest, BinaryAsExpression) {
|
||||
|
||||
const Expression* expression = contents.AsExpression(/*line_num=*/1);
|
||||
EXPECT_EQ(expression->line_num, 1);
|
||||
ASSERT_EQ(expression->tag, ExpressionKind::Tuple);
|
||||
ASSERT_EQ(expression->tag(), ExpressionKind::Tuple);
|
||||
std::vector<FieldInitializer> fields = *expression->GetTuple().fields;
|
||||
ASSERT_EQ(fields.size(), 2);
|
||||
EXPECT_EQ(fields[0].expression->tag, ExpressionKind::Integer);
|
||||
EXPECT_EQ(fields[1].expression->tag, ExpressionKind::Integer);
|
||||
EXPECT_EQ(fields[0].expression->tag(), ExpressionKind::Integer);
|
||||
EXPECT_EQ(fields[1].expression->tag(), ExpressionKind::Integer);
|
||||
}
|
||||
|
||||
TEST(ParenContentsTest, BinaryAsTuple) {
|
||||
@@ -103,11 +103,11 @@ TEST(ParenContentsTest, BinaryAsTuple) {
|
||||
|
||||
const Expression* tuple = contents.AsTuple(/*line_num=*/1);
|
||||
EXPECT_EQ(tuple->line_num, 1);
|
||||
ASSERT_EQ(tuple->tag, ExpressionKind::Tuple);
|
||||
ASSERT_EQ(tuple->tag(), ExpressionKind::Tuple);
|
||||
std::vector<FieldInitializer> fields = *tuple->GetTuple().fields;
|
||||
ASSERT_EQ(fields.size(), 2);
|
||||
EXPECT_EQ(fields[0].expression->tag, ExpressionKind::Integer);
|
||||
EXPECT_EQ(fields[1].expression->tag, ExpressionKind::Integer);
|
||||
EXPECT_EQ(fields[0].expression->tag(), ExpressionKind::Integer);
|
||||
EXPECT_EQ(fields[1].expression->tag(), ExpressionKind::Integer);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
Reference in New Issue
Block a user