forked from qt-creator/qt-creator
		
	C++: Lex correctly a u8"literal"
Previously it was considering invalid things `such as U8"literal". Change-Id: Icf4d051a26617ac2c6cb35d5a98f8af0ed801556 Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com> Reviewed-by: hjk <qthjk@ovi.com>
This commit is contained in:
		
							
								
								
									
										30
									
								
								src/libs/3rdparty/cplusplus/Lexer.cpp
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										30
									
								
								src/libs/3rdparty/cplusplus/Lexer.cpp
									
									
									
									
										vendored
									
									
								
							@@ -579,25 +579,23 @@ void Lexer::scan_helper(Token *tok)
 | 
			
		||||
            } else if (_yychar == '\'') {
 | 
			
		||||
                yyinp();
 | 
			
		||||
                scanCharLiteral(tok, ch);
 | 
			
		||||
            } else {
 | 
			
		||||
                if (_yychar == '8') {
 | 
			
		||||
                    unsigned char la = 0;
 | 
			
		||||
                    if (_currentChar + 1 != _lastChar)
 | 
			
		||||
                        la = *(_currentChar + 1);
 | 
			
		||||
                    if (la == '"') {
 | 
			
		||||
                        yyinp();
 | 
			
		||||
                        yyinp();
 | 
			
		||||
                        scanStringLiteral(tok, '8');
 | 
			
		||||
                    } else if (la == '\'') {
 | 
			
		||||
                        yyinp();
 | 
			
		||||
                        yyinp();
 | 
			
		||||
                        scanCharLiteral(tok, '8');
 | 
			
		||||
                    } else {
 | 
			
		||||
                        scanIdentifier(tok);
 | 
			
		||||
                    }
 | 
			
		||||
            } else if (ch == 'u' && _yychar == '8') {
 | 
			
		||||
                unsigned char la = 0;
 | 
			
		||||
                if (_currentChar + 1 != _lastChar)
 | 
			
		||||
                    la = *(_currentChar + 1);
 | 
			
		||||
                if (la == '"') {
 | 
			
		||||
                    yyinp();
 | 
			
		||||
                    yyinp();
 | 
			
		||||
                    scanStringLiteral(tok, '8');
 | 
			
		||||
                } else if (la == '\'') {
 | 
			
		||||
                    yyinp();
 | 
			
		||||
                    yyinp();
 | 
			
		||||
                    scanCharLiteral(tok, '8');
 | 
			
		||||
                } else {
 | 
			
		||||
                    scanIdentifier(tok);
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
                scanIdentifier(tok);
 | 
			
		||||
            }
 | 
			
		||||
        } else if (std::isalpha(ch) || ch == '_' || ch == '$') {
 | 
			
		||||
            scanIdentifier(tok);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user