diff options
author | con <qtc-committer@nokia.com> | 2009-11-04 19:15:14 +0100 |
---|---|---|
committer | con <qtc-committer@nokia.com> | 2009-11-04 19:15:14 +0100 |
commit | c8bb7e174bad675502df890e73033c0d91a502a5 (patch) | |
tree | 2649793665a60775007a7dfbff120d570e7b6e3f /src/shared/cplusplus | |
parent | fa3484757122bc75925df38638eae32cb28e711e (diff) | |
parent | 2a7439cde86f0186014576c104b1b70c95056d20 (diff) | |
download | qt-creator-c8bb7e174bad675502df890e73033c0d91a502a5.tar.gz |
Merge commit 'origin/1.3'
Conflicts:
src/plugins/qt4projectmanager/qt4project.cpp
Diffstat (limited to 'src/shared/cplusplus')
-rw-r--r-- | src/shared/cplusplus/Lexer.cpp | 6 | ||||
-rw-r--r-- | src/shared/cplusplus/Parser.cpp | 8 |
2 files changed, 11 insertions, 3 deletions
diff --git a/src/shared/cplusplus/Lexer.cpp b/src/shared/cplusplus/Lexer.cpp index a0cc9495d8..f8f1b6f133 100644 --- a/src/shared/cplusplus/Lexer.cpp +++ b/src/shared/cplusplus/Lexer.cpp @@ -603,7 +603,7 @@ void Lexer::scan_helper(Token *tok) do { yyinp(); - if (! (isalnum(_yychar) || _yychar == '_')) + if (! (isalnum(_yychar) || _yychar == '_' || _yychar == '$')) break; } while (_yychar); @@ -674,9 +674,9 @@ void Lexer::scan_helper(Token *tok) if (control()) tok->string = control()->findOrInsertStringLiteral(yytext, yylen); - } else if (std::isalpha(ch) || ch == '_') { + } else if (std::isalpha(ch) || ch == '_' || ch == '$') { const char *yytext = _currentChar - 1; - while (std::isalnum(_yychar) || _yychar == '_') + while (std::isalnum(_yychar) || _yychar == '_' || _yychar == '$') yyinp(); int yylen = _currentChar - yytext; if (f._scanKeywords) diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp index 835b2c11c8..ca26cb629e 100644 --- a/src/shared/cplusplus/Parser.cpp +++ b/src/shared/cplusplus/Parser.cpp @@ -1200,6 +1200,14 @@ bool Parser::parseDeclarator(DeclaratorAST *&node, bool stopAtCppInitializer) break; } + if (LA() == T___ASM__ && LA(2) == T_LPAREN) { // ### store the asm specifier in the AST + consumeToken(); // skip __asm__ + consumeToken(); // skip T_LPAREN + + if (skipUntil(T_RPAREN)) + consumeToken(); // skip T_RPAREN + } + SpecifierAST **spec_ptr = &node->post_attributes; while (LA() == T___ATTRIBUTE__) { parseAttributeSpecifier(*spec_ptr); |