summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/Parser.cpp
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@nokia.com>2010-03-22 18:28:04 +0100
committerErik Verbruggen <erik.verbruggen@nokia.com>2010-03-23 14:15:45 +0100
commit989681a0e927e10e01e08e2dd6e038a7bc62917d (patch)
tree969a99d624fd67509818809a3afc3ce905bee4e4 /src/shared/cplusplus/Parser.cpp
parent7a3fbf120a48b02e23057ea681f9c7df9af3dd93 (diff)
downloadqt-creator-989681a0e927e10e01e08e2dd6e038a7bc62917d.tar.gz
Added attribute parsing for elaborate-type-specifiers.
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 b684b799fa..fbc1e38bbf 100644
--- a/src/shared/cplusplus/Parser.cpp
+++ b/src/shared/cplusplus/Parser.cpp
@@ -2125,10 +2125,18 @@ bool Parser::parseElaboratedTypeSpecifier(SpecifierListAST *&node)
DEBUG_THIS_RULE();
if (lookAtClassKey() || LA() == T_ENUM || LA() == T_TYPENAME) {
unsigned classkey_token = consumeToken();
+
+ SpecifierListAST *attributes = 0, **attr_ptr = &attributes;
+ while (LA() == T___ATTRIBUTE__) {
+ parseAttributeSpecifier(*attr_ptr);
+ attr_ptr = &(*attr_ptr)->next;
+ }
+
NameAST *name = 0;
if (parseName(name)) {
ElaboratedTypeSpecifierAST *ast = new (_pool) ElaboratedTypeSpecifierAST;
ast->classkey_token = classkey_token;
+ ast->attribute_list = attributes;
ast->name = name;
node = new (_pool) SpecifierListAST(ast);
return true;