mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-29 06:55:00 +01:00
Define a base class for all AST nodes. (#947)
Also implement code-generation to manage the resulting boilerplate.
This commit is contained in:
@@ -21,7 +21,7 @@ using testing::ElementsAre;
|
||||
using testing::IsEmpty;
|
||||
|
||||
// Matches any `IntLiteral`.
|
||||
MATCHER(IntField, "") { return arg->kind() == Expression::Kind::IntLiteral; }
|
||||
MATCHER(IntField, "") { return arg->kind() == ExpressionKind::IntLiteral; }
|
||||
|
||||
static auto FakeSourceLoc(int line_num) -> SourceLocation {
|
||||
return SourceLocation("<test>", line_num);
|
||||
@@ -38,7 +38,7 @@ TEST_F(ExpressionTest, EmptyAsExpression) {
|
||||
Nonnull<const Expression*> expression =
|
||||
ExpressionFromParenContents(&arena, FakeSourceLoc(1), contents);
|
||||
EXPECT_EQ(expression->source_loc(), FakeSourceLoc(1));
|
||||
ASSERT_EQ(expression->kind(), Expression::Kind::TupleLiteral);
|
||||
ASSERT_EQ(expression->kind(), ExpressionKind::TupleLiteral);
|
||||
EXPECT_THAT(cast<TupleLiteral>(*expression).fields(), IsEmpty());
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ TEST_F(ExpressionTest, EmptyAsTuple) {
|
||||
Nonnull<const Expression*> tuple =
|
||||
TupleExpressionFromParenContents(&arena, FakeSourceLoc(1), contents);
|
||||
EXPECT_EQ(tuple->source_loc(), FakeSourceLoc(1));
|
||||
ASSERT_EQ(tuple->kind(), Expression::Kind::TupleLiteral);
|
||||
ASSERT_EQ(tuple->kind(), ExpressionKind::TupleLiteral);
|
||||
EXPECT_THAT(cast<TupleLiteral>(*tuple).fields(), IsEmpty());
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@ TEST_F(ExpressionTest, UnaryNoCommaAsExpression) {
|
||||
Nonnull<const Expression*> expression =
|
||||
ExpressionFromParenContents(&arena, FakeSourceLoc(1), contents);
|
||||
EXPECT_EQ(expression->source_loc(), FakeSourceLoc(2));
|
||||
ASSERT_EQ(expression->kind(), Expression::Kind::IntLiteral);
|
||||
ASSERT_EQ(expression->kind(), ExpressionKind::IntLiteral);
|
||||
}
|
||||
|
||||
TEST_F(ExpressionTest, UnaryNoCommaAsTuple) {
|
||||
@@ -77,7 +77,7 @@ TEST_F(ExpressionTest, UnaryNoCommaAsTuple) {
|
||||
Nonnull<const Expression*> tuple =
|
||||
TupleExpressionFromParenContents(&arena, FakeSourceLoc(1), contents);
|
||||
EXPECT_EQ(tuple->source_loc(), FakeSourceLoc(1));
|
||||
ASSERT_EQ(tuple->kind(), Expression::Kind::TupleLiteral);
|
||||
ASSERT_EQ(tuple->kind(), ExpressionKind::TupleLiteral);
|
||||
EXPECT_THAT(cast<TupleLiteral>(*tuple).fields(), ElementsAre(IntField()));
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@ TEST_F(ExpressionTest, UnaryWithCommaAsExpression) {
|
||||
Nonnull<const Expression*> expression =
|
||||
ExpressionFromParenContents(&arena, FakeSourceLoc(1), contents);
|
||||
EXPECT_EQ(expression->source_loc(), FakeSourceLoc(1));
|
||||
ASSERT_EQ(expression->kind(), Expression::Kind::TupleLiteral);
|
||||
ASSERT_EQ(expression->kind(), ExpressionKind::TupleLiteral);
|
||||
EXPECT_THAT(cast<TupleLiteral>(*expression).fields(),
|
||||
ElementsAre(IntField()));
|
||||
}
|
||||
@@ -102,7 +102,7 @@ TEST_F(ExpressionTest, UnaryWithCommaAsTuple) {
|
||||
Nonnull<const Expression*> tuple =
|
||||
TupleExpressionFromParenContents(&arena, FakeSourceLoc(1), contents);
|
||||
EXPECT_EQ(tuple->source_loc(), FakeSourceLoc(1));
|
||||
ASSERT_EQ(tuple->kind(), Expression::Kind::TupleLiteral);
|
||||
ASSERT_EQ(tuple->kind(), ExpressionKind::TupleLiteral);
|
||||
EXPECT_THAT(cast<TupleLiteral>(*tuple).fields(), ElementsAre(IntField()));
|
||||
}
|
||||
|
||||
@@ -115,7 +115,7 @@ TEST_F(ExpressionTest, BinaryAsExpression) {
|
||||
Nonnull<const Expression*> expression =
|
||||
ExpressionFromParenContents(&arena, FakeSourceLoc(1), contents);
|
||||
EXPECT_EQ(expression->source_loc(), FakeSourceLoc(1));
|
||||
ASSERT_EQ(expression->kind(), Expression::Kind::TupleLiteral);
|
||||
ASSERT_EQ(expression->kind(), ExpressionKind::TupleLiteral);
|
||||
EXPECT_THAT(cast<TupleLiteral>(*expression).fields(),
|
||||
ElementsAre(IntField(), IntField()));
|
||||
}
|
||||
@@ -129,7 +129,7 @@ TEST_F(ExpressionTest, BinaryAsTuple) {
|
||||
Nonnull<const Expression*> tuple =
|
||||
TupleExpressionFromParenContents(&arena, FakeSourceLoc(1), contents);
|
||||
EXPECT_EQ(tuple->source_loc(), FakeSourceLoc(1));
|
||||
ASSERT_EQ(tuple->kind(), Expression::Kind::TupleLiteral);
|
||||
ASSERT_EQ(tuple->kind(), ExpressionKind::TupleLiteral);
|
||||
EXPECT_THAT(cast<TupleLiteral>(*tuple).fields(),
|
||||
ElementsAre(IntField(), IntField()));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user