diff options
author | Bruno Cardoso Lopes <bruno.cardoso@gmail.com> | 2016-02-05 19:36:39 +0000 |
---|---|---|
committer | Bruno Cardoso Lopes <bruno.cardoso@gmail.com> | 2016-02-05 19:36:39 +0000 |
commit | fb9b6cd24b26a3e57b627be06415adf3a881435f (patch) | |
tree | e904e5435ebccdeb8cb8db3b482d7ff3bec2b1ef /clang/lib/Parse/ParseTemplate.cpp | |
parent | 98762d242967ff0bec8a47443212eed8a4c4c553 (diff) | |
download | llvm-fb9b6cd24b26a3e57b627be06415adf3a881435f.zip llvm-fb9b6cd24b26a3e57b627be06415adf3a881435f.tar.gz llvm-fb9b6cd24b26a3e57b627be06415adf3a881435f.tar.bz2 |
[Parser] Perform CachedTokens update dependent on token consumption
In the context where we break one tok::greatergreater into two
tok::greater in order to correctly update the cached tokens; update the
CachedTokens with two tok::greater only if ParseGreaterThanInTemplateList
clients asks to consume the last token. Otherwise we only need to add
one because the second is already added later on, as a not yet cached token.
Differential Revision: http://reviews.llvm.org/D16906
rdar://problem/24488367
llvm-svn: 259910
Diffstat (limited to 'clang/lib/Parse/ParseTemplate.cpp')
-rw-r--r-- | clang/lib/Parse/ParseTemplate.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/clang/lib/Parse/ParseTemplate.cpp b/clang/lib/Parse/ParseTemplate.cpp index 9e68c4a..e6ce30a 100644 --- a/clang/lib/Parse/ParseTemplate.cpp +++ b/clang/lib/Parse/ParseTemplate.cpp @@ -855,8 +855,12 @@ bool Parser::ParseGreaterThanInTemplateList(SourceLocation &RAngleLoc, RemainingToken == tok::greater && PP.IsPreviousCachedToken(PrevTok)) { PrevTok.setKind(RemainingToken); PrevTok.setLength(1); - Token NewToks[] = {PrevTok, Tok}; - PP.ReplacePreviousCachedToken(NewToks); + // Break tok::greatergreater into two tok::greater but only add the second + // one in case the client asks to consume the last token. + if (ConsumeLastToken) + PP.ReplacePreviousCachedToken({PrevTok, Tok}); + else + PP.ReplacePreviousCachedToken({PrevTok}); } if (!ConsumeLastToken) { |