summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto Raggi <qtc-committer@nokia.com>2009-01-14 15:16:02 +0100
committerRoberto Raggi <qtc-committer@nokia.com>2009-01-14 15:16:33 +0100
commit653b81427c46d7569b6434705494f47ec19bc70f (patch)
tree561fbe90eee0c56c54f40462151c5d535e6175d0
parent266ee2a4683c034eef11b6ba26cd06cd4553f5d7 (diff)
downloadqt-creator-653b81427c46d7569b6434705494f47ec19bc70f.tar.gz
Accept gcc attributes in cv-qualifiers.
-rw-r--r--shared/cplusplus/Parser.cpp3
-rw-r--r--tests/auto/cplusplus/ast/ast.pro1
-rw-r--r--tests/auto/cplusplus/ast/tst_ast.cpp10
-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