summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/Parser.cpp
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2009-11-04 13:47:06 +0100
committerRoberto Raggi <roberto.raggi@nokia.com>2009-11-04 13:47:06 +0100
commit64a08d15f306e56e2143f5f65de6d394c49d3a61 (patch)
treed5440e9b6fe10befd4c9aa8423bf6aef090f94ae /src/shared/cplusplus/Parser.cpp
parent4a87d875f04239595e9fe3904f0461ebbfdf227f (diff)
downloadqt-creator-64a08d15f306e56e2143f5f65de6d394c49d3a61.tar.gz
Parse ASM specifiers after declarators.
Again, a gcc extension used in the OSX system headers.
Diffstat (limited to 'src/shared/cplusplus/Parser.cpp')
-rw-r--r--src/shared/cplusplus/Parser.cpp8
1 files changed, 8 insertions, 0 deletions
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);