mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 22:02:55 +01:00
Switch Ptr to a C++ pointer using the nonnull attribute (#831)
The advantage is a C++ pointer is special, and this approach eliminates the Ptr class type that was causing problems in conversions. Attribute suggestion was courtesy of chandlerc. We're sticking with the Ptr name because it's shorter than Nonnull, and we're likely to keep this in lots of places.
This commit is contained in:
@@ -39,7 +39,7 @@ TEST_F(ExpressionTest, EmptyAsExpression) {
|
||||
ParenContents<Expression> contents = {.elements = {},
|
||||
.has_trailing_comma = false};
|
||||
Ptr<const Expression> expression =
|
||||
ExpressionFromParenContents(PtrTo(arena), FakeSourceLoc(1), contents);
|
||||
ExpressionFromParenContents(&arena, FakeSourceLoc(1), contents);
|
||||
EXPECT_EQ(expression->SourceLoc(), FakeSourceLoc(1));
|
||||
ASSERT_EQ(expression->Tag(), Expression::Kind::TupleLiteral);
|
||||
EXPECT_THAT(cast<TupleLiteral>(*expression).Fields(), IsEmpty());
|
||||
@@ -48,8 +48,8 @@ TEST_F(ExpressionTest, EmptyAsExpression) {
|
||||
TEST_F(ExpressionTest, EmptyAsTuple) {
|
||||
ParenContents<Expression> contents = {.elements = {},
|
||||
.has_trailing_comma = false};
|
||||
Ptr<const Expression> tuple = TupleExpressionFromParenContents(
|
||||
PtrTo(arena), FakeSourceLoc(1), contents);
|
||||
Ptr<const Expression> tuple =
|
||||
TupleExpressionFromParenContents(&arena, FakeSourceLoc(1), contents);
|
||||
EXPECT_EQ(tuple->SourceLoc(), FakeSourceLoc(1));
|
||||
ASSERT_EQ(tuple->Tag(), Expression::Kind::TupleLiteral);
|
||||
EXPECT_THAT(cast<TupleLiteral>(*tuple).Fields(), IsEmpty());
|
||||
@@ -68,7 +68,7 @@ TEST_F(ExpressionTest, UnaryNoCommaAsExpression) {
|
||||
.has_trailing_comma = false};
|
||||
|
||||
Ptr<const Expression> expression =
|
||||
ExpressionFromParenContents(PtrTo(arena), FakeSourceLoc(1), contents);
|
||||
ExpressionFromParenContents(&arena, FakeSourceLoc(1), contents);
|
||||
EXPECT_EQ(expression->SourceLoc(), FakeSourceLoc(2));
|
||||
ASSERT_EQ(expression->Tag(), Expression::Kind::IntLiteral);
|
||||
}
|
||||
@@ -79,8 +79,8 @@ TEST_F(ExpressionTest, UnaryNoCommaAsTuple) {
|
||||
.term = arena.New<IntLiteral>(FakeSourceLoc(2), 42)}},
|
||||
.has_trailing_comma = false};
|
||||
|
||||
Ptr<const Expression> tuple = TupleExpressionFromParenContents(
|
||||
PtrTo(arena), FakeSourceLoc(1), contents);
|
||||
Ptr<const Expression> tuple =
|
||||
TupleExpressionFromParenContents(&arena, FakeSourceLoc(1), contents);
|
||||
EXPECT_EQ(tuple->SourceLoc(), FakeSourceLoc(1));
|
||||
ASSERT_EQ(tuple->Tag(), Expression::Kind::TupleLiteral);
|
||||
EXPECT_THAT(cast<TupleLiteral>(*tuple).Fields(),
|
||||
@@ -94,7 +94,7 @@ TEST_F(ExpressionTest, UnaryWithCommaAsExpression) {
|
||||
.has_trailing_comma = true};
|
||||
|
||||
Ptr<const Expression> expression =
|
||||
ExpressionFromParenContents(PtrTo(arena), FakeSourceLoc(1), contents);
|
||||
ExpressionFromParenContents(&arena, FakeSourceLoc(1), contents);
|
||||
EXPECT_EQ(expression->SourceLoc(), FakeSourceLoc(1));
|
||||
ASSERT_EQ(expression->Tag(), Expression::Kind::TupleLiteral);
|
||||
EXPECT_THAT(cast<TupleLiteral>(*expression).Fields(),
|
||||
@@ -107,8 +107,8 @@ TEST_F(ExpressionTest, UnaryWithCommaAsTuple) {
|
||||
.term = arena.New<IntLiteral>(FakeSourceLoc(2), 42)}},
|
||||
.has_trailing_comma = true};
|
||||
|
||||
Ptr<const Expression> tuple = TupleExpressionFromParenContents(
|
||||
PtrTo(arena), FakeSourceLoc(1), contents);
|
||||
Ptr<const Expression> tuple =
|
||||
TupleExpressionFromParenContents(&arena, FakeSourceLoc(1), contents);
|
||||
EXPECT_EQ(tuple->SourceLoc(), FakeSourceLoc(1));
|
||||
ASSERT_EQ(tuple->Tag(), Expression::Kind::TupleLiteral);
|
||||
EXPECT_THAT(cast<TupleLiteral>(*tuple).Fields(),
|
||||
@@ -124,7 +124,7 @@ TEST_F(ExpressionTest, BinaryAsExpression) {
|
||||
.has_trailing_comma = true};
|
||||
|
||||
Ptr<const Expression> expression =
|
||||
ExpressionFromParenContents(PtrTo(arena), FakeSourceLoc(1), contents);
|
||||
ExpressionFromParenContents(&arena, FakeSourceLoc(1), contents);
|
||||
EXPECT_EQ(expression->SourceLoc(), FakeSourceLoc(1));
|
||||
ASSERT_EQ(expression->Tag(), Expression::Kind::TupleLiteral);
|
||||
EXPECT_THAT(cast<TupleLiteral>(*expression).Fields(),
|
||||
@@ -139,8 +139,8 @@ TEST_F(ExpressionTest, BinaryAsTuple) {
|
||||
.term = arena.New<IntLiteral>(FakeSourceLoc(3), 42)}},
|
||||
.has_trailing_comma = true};
|
||||
|
||||
Ptr<const Expression> tuple = TupleExpressionFromParenContents(
|
||||
PtrTo(arena), FakeSourceLoc(1), contents);
|
||||
Ptr<const Expression> tuple =
|
||||
TupleExpressionFromParenContents(&arena, FakeSourceLoc(1), contents);
|
||||
EXPECT_EQ(tuple->SourceLoc(), FakeSourceLoc(1));
|
||||
ASSERT_EQ(tuple->Tag(), Expression::Kind::TupleLiteral);
|
||||
EXPECT_THAT(cast<TupleLiteral>(*tuple).Fields(),
|
||||
|
||||
@@ -38,7 +38,7 @@ TEST_F(PatternTest, EmptyAsPattern) {
|
||||
ParenContents<Pattern> contents = {.elements = {},
|
||||
.has_trailing_comma = false};
|
||||
Ptr<const Pattern> pattern =
|
||||
PatternFromParenContents(PtrTo(arena), FakeSourceLoc(1), contents);
|
||||
PatternFromParenContents(&arena, FakeSourceLoc(1), contents);
|
||||
EXPECT_EQ(pattern->SourceLoc(), FakeSourceLoc(1));
|
||||
ASSERT_TRUE(isa<TuplePattern>(*pattern));
|
||||
EXPECT_THAT(cast<TuplePattern>(*pattern).Fields(), IsEmpty());
|
||||
@@ -48,7 +48,7 @@ TEST_F(PatternTest, EmptyAsTuplePattern) {
|
||||
ParenContents<Pattern> contents = {.elements = {},
|
||||
.has_trailing_comma = false};
|
||||
Ptr<const TuplePattern> tuple =
|
||||
TuplePatternFromParenContents(PtrTo(arena), FakeSourceLoc(1), contents);
|
||||
TuplePatternFromParenContents(&arena, FakeSourceLoc(1), contents);
|
||||
EXPECT_EQ(tuple->SourceLoc(), FakeSourceLoc(1));
|
||||
EXPECT_THAT(tuple->Fields(), IsEmpty());
|
||||
}
|
||||
@@ -66,7 +66,7 @@ TEST_F(PatternTest, UnaryNoCommaAsPattern) {
|
||||
.has_trailing_comma = false};
|
||||
|
||||
Ptr<const Pattern> pattern =
|
||||
PatternFromParenContents(PtrTo(arena), FakeSourceLoc(1), contents);
|
||||
PatternFromParenContents(&arena, FakeSourceLoc(1), contents);
|
||||
EXPECT_EQ(pattern->SourceLoc(), FakeSourceLoc(2));
|
||||
ASSERT_TRUE(isa<AutoPattern>(*pattern));
|
||||
}
|
||||
@@ -78,7 +78,7 @@ TEST_F(PatternTest, UnaryNoCommaAsTuplePattern) {
|
||||
.has_trailing_comma = false};
|
||||
|
||||
Ptr<const TuplePattern> tuple =
|
||||
TuplePatternFromParenContents(PtrTo(arena), FakeSourceLoc(1), contents);
|
||||
TuplePatternFromParenContents(&arena, FakeSourceLoc(1), contents);
|
||||
EXPECT_EQ(tuple->SourceLoc(), FakeSourceLoc(1));
|
||||
EXPECT_THAT(tuple->Fields(), ElementsAre(AutoFieldNamed("0")));
|
||||
}
|
||||
@@ -90,7 +90,7 @@ TEST_F(PatternTest, UnaryWithCommaAsPattern) {
|
||||
.has_trailing_comma = true};
|
||||
|
||||
Ptr<const Pattern> pattern =
|
||||
PatternFromParenContents(PtrTo(arena), FakeSourceLoc(1), contents);
|
||||
PatternFromParenContents(&arena, FakeSourceLoc(1), contents);
|
||||
EXPECT_EQ(pattern->SourceLoc(), FakeSourceLoc(1));
|
||||
ASSERT_TRUE(isa<TuplePattern>(*pattern));
|
||||
EXPECT_THAT(cast<TuplePattern>(*pattern).Fields(),
|
||||
@@ -104,7 +104,7 @@ TEST_F(PatternTest, UnaryWithCommaAsTuplePattern) {
|
||||
.has_trailing_comma = true};
|
||||
|
||||
Ptr<const TuplePattern> tuple =
|
||||
TuplePatternFromParenContents(PtrTo(arena), FakeSourceLoc(1), contents);
|
||||
TuplePatternFromParenContents(&arena, FakeSourceLoc(1), contents);
|
||||
EXPECT_EQ(tuple->SourceLoc(), FakeSourceLoc(1));
|
||||
EXPECT_THAT(tuple->Fields(), ElementsAre(AutoFieldNamed("0")));
|
||||
}
|
||||
@@ -118,7 +118,7 @@ TEST_F(PatternTest, BinaryAsPattern) {
|
||||
.has_trailing_comma = true};
|
||||
|
||||
Ptr<const Pattern> pattern =
|
||||
PatternFromParenContents(PtrTo(arena), FakeSourceLoc(1), contents);
|
||||
PatternFromParenContents(&arena, FakeSourceLoc(1), contents);
|
||||
EXPECT_EQ(pattern->SourceLoc(), FakeSourceLoc(1));
|
||||
ASSERT_TRUE(isa<TuplePattern>(*pattern));
|
||||
EXPECT_THAT(cast<TuplePattern>(*pattern).Fields(),
|
||||
@@ -134,7 +134,7 @@ TEST_F(PatternTest, BinaryAsTuplePattern) {
|
||||
.has_trailing_comma = true};
|
||||
|
||||
Ptr<const TuplePattern> tuple =
|
||||
TuplePatternFromParenContents(PtrTo(arena), FakeSourceLoc(1), contents);
|
||||
TuplePatternFromParenContents(&arena, FakeSourceLoc(1), contents);
|
||||
EXPECT_EQ(tuple->SourceLoc(), FakeSourceLoc(1));
|
||||
EXPECT_THAT(tuple->Fields(),
|
||||
ElementsAre(AutoFieldNamed("0"), AutoFieldNamed("1")));
|
||||
|
||||
Reference in New Issue
Block a user