mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
[Syntax] Short diversion converting StmtListSyntax to a SyntaxCollection
This commit is contained in:
@@ -330,6 +330,27 @@ ReturnStmtSyntax SyntaxFactory::makeBlankReturnStmt() {
|
||||
return { Data, Data.get() };
|
||||
}
|
||||
|
||||
/// Make a statement list from a loosely connected list of statements.
|
||||
StmtListSyntax
|
||||
SyntaxFactory::makeStmtList(const std::vector<StmtSyntax> &Statements) {
|
||||
RawSyntax::LayoutList Layout;
|
||||
for (auto Stmt : Statements) {
|
||||
Layout.push_back(Stmt.getRaw());
|
||||
}
|
||||
|
||||
auto Raw = RawSyntax::make(SyntaxKind::StmtList, Layout,
|
||||
SourcePresence::Present);
|
||||
auto Data = StmtListSyntaxData::make(Raw);
|
||||
return { Data, Data.get() };
|
||||
}
|
||||
|
||||
/// Make an empty statement list.
|
||||
StmtListSyntax SyntaxFactory::makeBlankStmtList() {
|
||||
auto Raw = RawSyntax::make(SyntaxKind::StmtList, {}, SourcePresence::Present);
|
||||
auto Data = StmtListSyntaxData::make(Raw);
|
||||
return { Data, Data.get() };
|
||||
}
|
||||
|
||||
#pragma mark - Expressions
|
||||
|
||||
#pragma mark - integer-literal-expression
|
||||
@@ -544,6 +565,19 @@ SyntaxFactory::makeRightParenToken(const Trivia &LeadingTrivia,
|
||||
return TokenSyntax::make(tok::r_paren, ")", SourcePresence::Present,
|
||||
LeadingTrivia, TrailingTrivia);
|
||||
}
|
||||
RC<TokenSyntax>
|
||||
SyntaxFactory::makeLeftBraceToken(const Trivia &LeadingTrivia,
|
||||
const Trivia &TrailingTrivia) {
|
||||
return TokenSyntax::make(tok::l_brace, "{", SourcePresence::Present,
|
||||
LeadingTrivia, TrailingTrivia);
|
||||
}
|
||||
|
||||
RC<TokenSyntax>
|
||||
SyntaxFactory::makeRightBraceToken(const Trivia &LeadingTrivia,
|
||||
const Trivia &TrailingTrivia) {
|
||||
return TokenSyntax::make(tok::r_brace, "}", SourcePresence::Present,
|
||||
LeadingTrivia, TrailingTrivia);
|
||||
}
|
||||
|
||||
RC<TokenSyntax>
|
||||
SyntaxFactory::makeLeftSquareBracketToken(const Trivia &LeadingTrivia,
|
||||
|
||||
Reference in New Issue
Block a user