Skip to content

Commit c2aeb55

Browse files
harlanhaskinsbitjammer
authored andcommitted
Add tests for IntegerLiteralExprSyntax.
This also fixes a typo in makePrefixOperator and implements IntegerLiteralExprSyntax::withSign.
1 parent c58d94f commit c2aeb55

File tree

7 files changed

+61
-9
lines changed

7 files changed

+61
-9
lines changed

include/swift/Syntax/SyntaxFactory.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,7 @@ struct SyntaxFactory {
419419
#pragma mark - Operators
420420

421421
/// Make a prefix operator with the given text.
422-
static RC<TokenSyntax> makePrefixOpereator(OwnedString Name,
422+
static RC<TokenSyntax> makePrefixOperator(OwnedString Name,
423423
const Trivia &LeadingTrivia);
424424

425425
#pragma mark - Types

lib/Syntax/ExprSyntax.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,13 @@ IntegerLiteralExprSyntax::withDigits(RC<TokenSyntax> NewDigits) const {
114114
Cursor::Digits);
115115
}
116116

117+
IntegerLiteralExprSyntax
118+
IntegerLiteralExprSyntax::withSign(RC<swift::syntax::TokenSyntax> NewSign)
119+
const {
120+
assert(NewSign->getTokenKind() == tok::oper_prefix);
121+
return Data->replaceChild<IntegerLiteralExprSyntax>(NewSign, Cursor::Sign);
122+
}
123+
117124
#pragma mark - symbolic-reference Data
118125

119126
SymbolicReferenceExprSyntaxData::

lib/Syntax/SyntaxFactory.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -910,7 +910,7 @@ GenericRequirementListSyntax SyntaxFactory::makeBlankGenericRequirementList() {
910910

911911
/// Make a prefix operator with the given text.
912912
RC<TokenSyntax>
913-
SyntaxFactory::makePrefixOpereator(OwnedString Name,
913+
SyntaxFactory::makePrefixOperator(OwnedString Name,
914914
const Trivia &LeadingTrivia) {
915915
return TokenSyntax::make(tok::oper_prefix, Name,
916916
SourcePresence::Present, LeadingTrivia, {});

unittests/Syntax/DeclSyntaxTests.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ FunctionParameterSyntax getCannedFunctionParameter() {
208208
auto NoEllipsis = TokenSyntax::missingToken(tok::identifier, "...");
209209
auto Equal = SyntaxFactory::makeEqualToken({}, Trivia::spaces(1));
210210

211-
auto Sign = SyntaxFactory::makePrefixOpereator("-", {});
211+
auto Sign = SyntaxFactory::makePrefixOperator("-", {});
212212
auto OneDigits = SyntaxFactory::makeIntegerLiteralToken("1", {}, {});
213213
auto One = SyntaxFactory::makeIntegerLiteralExpr(Sign, OneDigits);
214214
auto Comma = SyntaxFactory::makeCommaToken({}, Trivia::spaces(1));
@@ -243,7 +243,7 @@ TEST(DeclSyntaxTests, FunctionParameterGetAPIs) {
243243
auto NoEllipsis = TokenSyntax::missingToken(tok::identifier, "...");
244244
auto Equal = SyntaxFactory::makeEqualToken({}, Trivia::spaces(1));
245245

246-
auto Sign = SyntaxFactory::makePrefixOpereator("-", {});
246+
auto Sign = SyntaxFactory::makePrefixOperator("-", {});
247247
auto OneDigits = SyntaxFactory::makeIntegerLiteralToken("1", {}, {});
248248
auto One = SyntaxFactory::makeIntegerLiteralExpr(Sign, OneDigits);
249249
auto Comma = SyntaxFactory::makeCommaToken({}, {});

unittests/Syntax/ExprSyntaxTests.cpp

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,52 @@ using namespace swift::syntax;
88

99
#pragma mark - integer-literal-expression
1010

11-
// TODO
11+
TEST(ExprSyntaxTests, IntegerLiteralExprMakeAPIs) {
12+
{
13+
auto LiteralToken = SyntaxFactory::makeIntegerLiteralToken("100", {}, {});
14+
auto Sign = SyntaxFactory::makePrefixOperator("-", {});
15+
auto Literal = SyntaxFactory::makeIntegerLiteralExpr(Sign, LiteralToken);
16+
17+
llvm::SmallString<10> Scratch;
18+
llvm::raw_svector_ostream OS(Scratch);
19+
Literal.print(OS);
20+
ASSERT_EQ(OS.str().str(), "-100");
21+
ASSERT_EQ(Literal.getKind(), SyntaxKind::IntegerLiteralExpr);
22+
}
23+
{
24+
auto LiteralToken = SyntaxFactory::makeIntegerLiteralToken("1_000", {}, {});
25+
auto NoSign = TokenSyntax::missingToken(tok::oper_prefix, "");
26+
auto Literal = SyntaxFactory::makeIntegerLiteralExpr(NoSign, LiteralToken);
27+
28+
llvm::SmallString<10> Scratch;
29+
llvm::raw_svector_ostream OS(Scratch);
30+
Literal.print(OS);
31+
ASSERT_EQ(OS.str().str(), "1_000");
32+
}
33+
{
34+
auto Literal = SyntaxFactory::makeBlankIntegerLiteralExpr()
35+
.withSign(TokenSyntax::missingToken(tok::oper_prefix, ""))
36+
.withDigits(SyntaxFactory::makeIntegerLiteralToken("0", {}, {
37+
Trivia::spaces(4)
38+
}));
39+
40+
llvm::SmallString<10> Scratch;
41+
llvm::raw_svector_ostream OS(Scratch);
42+
Literal.print(OS);
43+
ASSERT_EQ(OS.str().str(), "0 ");
44+
}
45+
{
46+
auto LiteralToken = SyntaxFactory::makeIntegerLiteralToken("1_000", {}, {});
47+
auto NoSign = TokenSyntax::missingToken(tok::oper_prefix, "");
48+
auto OneThousand = SyntaxFactory::makeIntegerLiteralExpr(NoSign,
49+
LiteralToken);
50+
51+
llvm::SmallString<10> Scratch;
52+
llvm::raw_svector_ostream OS(Scratch);
53+
OneThousand.print(OS);
54+
ASSERT_EQ(OS.str().str(), "1_000");
55+
}
56+
}
1257

1358
#pragma mark - symbolic-reference
1459

unittests/Syntax/StmtSyntaxTests.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ TEST(StmtSyntaxTests, ContinueStmtMakeAPIs) {
209209

210210
TEST(StmtSyntaxTests, ReturnStmtMakeAPIs) {
211211
auto ReturnKW = SyntaxFactory::makeReturnKeyword({}, Trivia::spaces(1));
212-
auto Minus = SyntaxFactory::makePrefixOpereator("-", {});
212+
auto Minus = SyntaxFactory::makePrefixOperator("-", {});
213213
auto OneDigits = SyntaxFactory::makeIntegerLiteralToken("1", {}, {});
214214
auto MinusOne = SyntaxFactory::makeIntegerLiteralExpr(Minus, OneDigits);
215215

@@ -230,7 +230,7 @@ TEST(StmtSyntaxTests, ReturnStmtMakeAPIs) {
230230

231231
TEST(StmtSyntaxTests, ReturnStmtGetAPIs) {
232232
auto ReturnKW = SyntaxFactory::makeReturnKeyword({}, Trivia::spaces(1));
233-
auto Minus = SyntaxFactory::makePrefixOpereator("-", {});
233+
auto Minus = SyntaxFactory::makePrefixOperator("-", {});
234234
auto OneDigits = SyntaxFactory::makeIntegerLiteralToken("1", {}, {});
235235
auto MinusOne = SyntaxFactory::makeIntegerLiteralExpr(Minus, OneDigits);
236236
auto Return = SyntaxFactory::makeReturnStmt(ReturnKW, MinusOne);
@@ -243,7 +243,7 @@ TEST(StmtSyntaxTests, ReturnStmtGetAPIs) {
243243

244244
TEST(StmtSyntaxTests, ReturnStmtWithAPIs) {
245245
auto ReturnKW = SyntaxFactory::makeReturnKeyword({}, Trivia::spaces(1));
246-
auto Minus = SyntaxFactory::makePrefixOpereator("-", {});
246+
auto Minus = SyntaxFactory::makePrefixOperator("-", {});
247247
auto OneDigits = SyntaxFactory::makeIntegerLiteralToken("1", {}, {});
248248
auto MinusOne = SyntaxFactory::makeIntegerLiteralExpr(Minus, OneDigits);
249249

unittests/Syntax/ThreadSafeCachingTests.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ class Pool {
8282
// - Both threads get the exact same child (by identity)
8383
TEST(ThreadSafeCachingTests, ReturnGetExpression) {
8484
auto ReturnKW = SyntaxFactory::makeReturnKeyword({}, Trivia::spaces(1));
85-
auto Minus = SyntaxFactory::makePrefixOpereator("-", {});
85+
auto Minus = SyntaxFactory::makePrefixOperator("-", {});
8686
auto One = SyntaxFactory::makeIntegerLiteralToken("1", {}, {});
8787
auto MinusOne = SyntaxFactory::makeIntegerLiteralExpr(Minus, One);
8888

0 commit comments

Comments
 (0)