summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus
diff options
context:
space:
mode:
authorcon <qtc-committer@nokia.com>2009-11-04 19:15:14 +0100
committercon <qtc-committer@nokia.com>2009-11-04 19:15:14 +0100
commitc8bb7e174bad675502df890e73033c0d91a502a5 (patch)
tree2649793665a60775007a7dfbff120d570e7b6e3f /src/shared/cplusplus
parentfa3484757122bc75925df38638eae32cb28e711e (diff)
parent2a7439cde86f0186014576c104b1b70c95056d20 (diff)
downloadqt-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.cpp6
-rw-r--r--src/shared/cplusplus/Parser.cpp8
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);