[Syntax] Short diversion converting StmtListSyntax to a SyntaxCollection

This commit is contained in:
David Farler
2017-03-02 16:05:54 -08:00
parent f900fbdcea
commit ceb3babbc6
9 changed files with 69 additions and 102 deletions

View File

@@ -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,