diff options
author | Roberto Raggi <qtc-committer@nokia.com> | 2009-01-12 14:55:33 +0100 |
---|---|---|
committer | Roberto Raggi <qtc-committer@nokia.com> | 2009-01-12 14:56:00 +0100 |
commit | 8078053c994cf20cef150bdceef1bbab647bccef (patch) | |
tree | c164444ae9c94a0476b4990cbdc777e8519a58cf /tests | |
parent | 54d9d0d46a30b49ce3fef8945454ab0d09d98a68 (diff) | |
download | qt-creator-8078053c994cf20cef150bdceef1bbab647bccef.tar.gz |
Improved ObjC++ support.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/cplusplus/ast/tst_ast.cpp | 34 | ||||
-rw-r--r-- | tests/manual/cplusplus/main.cpp | 1 |
2 files changed, 35 insertions, 0 deletions
diff --git a/tests/auto/cplusplus/ast/tst_ast.cpp b/tests/auto/cplusplus/ast/tst_ast.cpp index 969f1ac5ae..5756d2dd22 100644 --- a/tests/auto/cplusplus/ast/tst_ast.cpp +++ b/tests/auto/cplusplus/ast/tst_ast.cpp @@ -20,11 +20,15 @@ public: { StringLiteral *fileId = control.findOrInsertFileName("<stdin>"); TranslationUnit *unit = new TranslationUnit(&control, fileId); + unit->setObjCEnabled(true); unit->setSource(source.constData(), source.length()); unit->parse(mode); return unit; } + TranslationUnit *parseDeclaration(const QByteArray &source) + { return parse(source, TranslationUnit::ParseDeclaration); } + TranslationUnit *parseExpression(const QByteArray &source) { return parse(source, TranslationUnit::ParseExpression); } @@ -43,6 +47,11 @@ private slots: void while_condition_statement(); void for_statement(); void cpp_initializer_or_function_declaration(); + + // objc++ + void objc_attributes_followed_by_at_keyword(); + void objc_protocol_forward_declaration_1(); + void objc_protocol_definition_1(); }; void tst_AST::simple_name() @@ -293,6 +302,31 @@ void tst_AST::cpp_initializer_or_function_declaration() QCOMPARE(param->type_specifier->asNamedTypeSpecifier()->name->asSimpleName()->identifier_token, 4U); } +void tst_AST::objc_attributes_followed_by_at_keyword() +{ + QSharedPointer<TranslationUnit> unit(parseDeclaration("\n" +"__attribute__((deprecated)) @interface foo <bar>\n" +"{\n" +" int a, b;\n" +"}\n" +"+ (id) init;\n" +"- (id) init:(int)a foo:(int)b, c;\n" +"@end\n" + )); + AST *ast = unit->ast(); +} + +void tst_AST::objc_protocol_forward_declaration_1() +{ + QSharedPointer<TranslationUnit> unit(parseDeclaration("\n@protocol foo;")); + AST *ast = unit->ast(); +} + +void tst_AST::objc_protocol_definition_1() +{ + QSharedPointer<TranslationUnit> unit(parseDeclaration("\n@protocol foo <ciao, bar> @end")); + AST *ast = unit->ast(); +} QTEST_APPLESS_MAIN(tst_AST) #include "tst_ast.moc" diff --git a/tests/manual/cplusplus/main.cpp b/tests/manual/cplusplus/main.cpp index c33bcbbeff..4292fe929f 100644 --- a/tests/manual/cplusplus/main.cpp +++ b/tests/manual/cplusplus/main.cpp @@ -248,6 +248,7 @@ int main(int argc, char *argv[]) Control control; StringLiteral *fileId = control.findOrInsertFileName("<stdin>"); TranslationUnit unit(&control, fileId); + unit.setObjCEnabled(true); unit.setSource(source.constData(), source.size()); unit.parse(); if (! unit.ast()) |