forked from qt-creator/qt-creator
C++: fix digraph parsing for <:: exception.
According to section 2.5 from the standard: """ If the input stream has been parsed into preprocessing tokens up to a given character: ... Otherwise, if the next three characters are <:: and the subsequent character is neither : nor >, the < is treated as a preprocessor token by itself and not as the first character of the alternative token <:. """ Change-Id: Ib9cdac61e3c2243d1bc1d4471a09ae6bd839fdda Task-number: QTCREATORBUG-13253 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
This commit is contained in:
8
src/libs/3rdparty/cplusplus/Lexer.cpp
vendored
8
src/libs/3rdparty/cplusplus/Lexer.cpp
vendored
@@ -610,8 +610,12 @@ void Lexer::scan_helper(Token *tok)
|
||||
yyinp();
|
||||
tok->f.kind = T_LESS_EQUAL;
|
||||
} else if (_yychar == ':') {
|
||||
yyinp();
|
||||
tok->f.kind = T_LBRACKET;
|
||||
if (*(_currentChar+1) != ':' || *(_currentChar+2) == ':' || *(_currentChar+2) == '>') {
|
||||
yyinp();
|
||||
tok->f.kind = T_LBRACKET;
|
||||
} else {
|
||||
tok->f.kind = T_LESS;
|
||||
}
|
||||
} else if (_yychar == '%') {
|
||||
yyinp();
|
||||
tok->f.kind = T_LBRACE;
|
||||
|
||||
Reference in New Issue
Block a user