diff options
author | Roberto Raggi <qtc-committer@nokia.com> | 2009-01-14 15:16:02 +0100 |
---|---|---|
committer | Roberto Raggi <qtc-committer@nokia.com> | 2009-01-14 15:16:33 +0100 |
commit | 653b81427c46d7569b6434705494f47ec19bc70f (patch) | |
tree | 561fbe90eee0c56c54f40462151c5d535e6175d0 | |
parent | 266ee2a4683c034eef11b6ba26cd06cd4553f5d7 (diff) | |
download | qt-creator-653b81427c46d7569b6434705494f47ec19bc70f.tar.gz |
Accept gcc attributes in cv-qualifiers.
-rw-r--r-- | shared/cplusplus/Parser.cpp | 3 | ||||
-rw-r--r-- | tests/auto/cplusplus/ast/ast.pro | 1 | ||||
-rw-r--r-- | tests/auto/cplusplus/ast/tst_ast.cpp | 10 | ||||
-rw-r--r-- | tests/manual/cplusplus/conf.c++ | 1 |
4 files changed, 14 insertions, 1 deletions
diff --git a/shared/cplusplus/Parser.cpp b/shared/cplusplus/Parser.cpp index ae9f39469a..eefa3d5b9f 100644 --- a/shared/cplusplus/Parser.cpp +++ b/shared/cplusplus/Parser.cpp @@ -751,6 +751,9 @@ bool Parser::parseCvQualifiers(SpecifierAST *&node) spec->specifier_token = consumeToken(); *ast = spec; ast = &(*ast)->next; + } else if(LA() == T___ATTRIBUTE__) { + parseAttributeSpecifier(*ast); + ast = &(*ast)->next; } else { break; } diff --git a/tests/auto/cplusplus/ast/ast.pro b/tests/auto/cplusplus/ast/ast.pro index 6974c6bbb4..39fd14105d 100644 --- a/tests/auto/cplusplus/ast/ast.pro +++ b/tests/auto/cplusplus/ast/ast.pro @@ -1,5 +1,4 @@ load(qttest_p4) include(../shared/shared.pri) QT = core - SOURCES += tst_ast.cpp diff --git a/tests/auto/cplusplus/ast/tst_ast.cpp b/tests/auto/cplusplus/ast/tst_ast.cpp index 5756d2dd22..689da076ea 100644 --- a/tests/auto/cplusplus/ast/tst_ast.cpp +++ b/tests/auto/cplusplus/ast/tst_ast.cpp @@ -36,6 +36,9 @@ public: { return parse(source, TranslationUnit::ParseStatement); } private slots: + // declarations + void gcc_attributes_1(); + // expressions void simple_name(); void template_id(); @@ -54,6 +57,13 @@ private slots: void objc_protocol_definition_1(); }; +void tst_AST::gcc_attributes_1() +{ + QSharedPointer<TranslationUnit> unit(parseDeclaration("\n" +"static inline void *__attribute__((__always_inline__)) _mm_malloc(size_t size, size_t align);" + )); +} + void tst_AST::simple_name() { QSharedPointer<TranslationUnit> unit(parseExpression("a")); diff --git a/tests/manual/cplusplus/conf.c++ b/tests/manual/cplusplus/conf.c++ index fbfad57a4b..c179f97927 100644 --- a/tests/manual/cplusplus/conf.c++ +++ b/tests/manual/cplusplus/conf.c++ @@ -5,3 +5,4 @@ #define __asm__(a...) #define restrict #define __restrict +#define __weak |