summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRoberto Raggi <qtc-committer@nokia.com>2009-01-12 14:55:33 +0100
committerRoberto Raggi <qtc-committer@nokia.com>2009-01-12 14:56:00 +0100
commit8078053c994cf20cef150bdceef1bbab647bccef (patch)
treec164444ae9c94a0476b4990cbdc777e8519a58cf /tests
parent54d9d0d46a30b49ce3fef8945454ab0d09d98a68 (diff)
downloadqt-creator-8078053c994cf20cef150bdceef1bbab647bccef.tar.gz
Improved ObjC++ support.
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/cplusplus/ast/tst_ast.cpp34
-rw-r--r--tests/manual/cplusplus/main.cpp1
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())