diff options
author | Erik Verbruggen <erik.verbruggen@nokia.com> | 2010-03-22 18:28:04 +0100 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@nokia.com> | 2010-03-23 14:15:45 +0100 |
commit | 989681a0e927e10e01e08e2dd6e038a7bc62917d (patch) | |
tree | 969a99d624fd67509818809a3afc3ce905bee4e4 /src/shared/cplusplus/Parser.cpp | |
parent | 7a3fbf120a48b02e23057ea681f9c7df9af3dd93 (diff) | |
download | qt-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.cpp | 8 |
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; |