Accept gcc attributes in cv-qualifiers.

This commit is contained in:
Roberto Raggi
2009-01-14 15:16:02 +01:00
parent 266ee2a468
commit 653b81427c
4 changed files with 14 additions and 1 deletions

View File

@@ -751,6 +751,9 @@ bool Parser::parseCvQualifiers(SpecifierAST *&node)
spec->specifier_token = consumeToken(); spec->specifier_token = consumeToken();
*ast = spec; *ast = spec;
ast = &(*ast)->next; ast = &(*ast)->next;
} else if(LA() == T___ATTRIBUTE__) {
parseAttributeSpecifier(*ast);
ast = &(*ast)->next;
} else { } else {
break; break;
} }

View File

@@ -1,5 +1,4 @@
load(qttest_p4) load(qttest_p4)
include(../shared/shared.pri) include(../shared/shared.pri)
QT = core QT = core
SOURCES += tst_ast.cpp SOURCES += tst_ast.cpp

View File

@@ -36,6 +36,9 @@ public:
{ return parse(source, TranslationUnit::ParseStatement); } { return parse(source, TranslationUnit::ParseStatement); }
private slots: private slots:
// declarations
void gcc_attributes_1();
// expressions // expressions
void simple_name(); void simple_name();
void template_id(); void template_id();
@@ -54,6 +57,13 @@ private slots:
void objc_protocol_definition_1(); 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() void tst_AST::simple_name()
{ {
QSharedPointer<TranslationUnit> unit(parseExpression("a")); QSharedPointer<TranslationUnit> unit(parseExpression("a"));

View File

@@ -5,3 +5,4 @@
#define __asm__(a...) #define __asm__(a...)
#define restrict #define restrict
#define __restrict #define __restrict
#define __weak