Lexer constuctors: allow to create a lexer that scans a subrange without having

to create a parent lexer first.


Swift SVN r7085
This commit is contained in:
Dmitri Hrybenko
2013-08-09 18:19:55 +00:00
parent 49e15b33e7
commit d1453b3f9d
3 changed files with 21 additions and 24 deletions

View File

@@ -199,12 +199,12 @@ std::vector<Token> swift::tokenize(SourceManager &SM, unsigned BufferID,
if (Offset == 0 && EndOffset == 0)
EndOffset = SM->getMemoryBuffer(BufferID)->getBufferSize();
Lexer L(SM, BufferID, /*Diags=*/nullptr, /*InSILMode=*/false, KeepComments);
Lexer SubLexer(L, Offset, EndOffset);
Lexer L(SM, BufferID, /*Diags=*/nullptr, /*InSILMode=*/false, KeepComments,
Offset, EndOffset);
std::vector<Token> Tokens;
do {
Tokens.emplace_back();
SubLexer.lex(Tokens.back());
L.lex(Tokens.back());
if (Tokens.back().is(tok::string_literal) && TokenizeInterpolatedString) {
Token StrTok = Tokens.back();
Tokens.pop_back();