From 0e4deaba2356e0baec5d6e65dabf503bf6f7c3bc Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Tue, 8 Oct 2013 13:42:39 +0200 Subject: C++: Parse MEMBER in Q_PROPERTY() MEMBER was added in Qt5. Task-number: QTCREATORBUG-10068 Change-Id: Ic6c15a0e5ee8981ab98e4c12fc1521dc281b731f Reviewed-by: Erik Verbruggen --- tests/auto/cplusplus/ast/tst_ast.cpp | 37 ++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'tests/auto/cplusplus/ast/tst_ast.cpp') diff --git a/tests/auto/cplusplus/ast/tst_ast.cpp b/tests/auto/cplusplus/ast/tst_ast.cpp index f97b47a82e..329662892e 100644 --- a/tests/auto/cplusplus/ast/tst_ast.cpp +++ b/tests/auto/cplusplus/ast/tst_ast.cpp @@ -152,6 +152,10 @@ private slots: void cpp_constructor_multiple_args(); void cpp_constructor_function_try_catch(); + // Q_PROPERTY + void cpp_qproperty(); + void cpp_qproperty_data(); + // objc++ void objc_simple_class(); void objc_attributes_followed_by_at_keyword(); @@ -1235,6 +1239,39 @@ void tst_AST::cpp_constructor_function_try_catch() QVERIFY(funDecl->parameter_declaration_clause->parameter_declaration_list != 0); } +void tst_AST::cpp_qproperty() +{ + QFETCH(QByteArray, source); + QVERIFY(!source.isEmpty()); + + const QByteArray sourceWithinClass = "class C { " + source + " };"; + QSharedPointer unit(parseDeclaration(sourceWithinClass, false, true)); + QVERIFY(unit->ast()); + + QCOMPARE(diag.errorCount, 0); +} + +void tst_AST::cpp_qproperty_data() +{ + QTest::addColumn("source"); + + QTest::newRow("read-final") + << QByteArray("Q_PROPERTY(bool focus READ hasFocus FINAL)"); + QTest::newRow("read-write-final") + << QByteArray("Q_PROPERTY(bool focus READ hasFocus WRITE setFocus FINAL)"); + QTest::newRow("member-final") + << QByteArray("Q_PROPERTY(bool focus MEMBER m_focus FINAL)"); + QTest::newRow("member-read-final") + << QByteArray("Q_PROPERTY(bool focus MEMBER m_focus READ m_focus FINAL)"); + QTest::newRow("member-read-write-final") + << QByteArray("Q_PROPERTY(bool focus MEMBER m_focus READ hasFocus WRITE setFocus FINAL)"); + + QTest::newRow("all") + << QByteArray("Q_PROPERTY(bool focus MEMBER m_focus READ hasFocus WRITE setFocus" + " RESET resetFocus NOTIFY focusChanged REVISION 1 DESIGNABLE true" + " SCRIPTABLE true STORED true USER true CONSTANT FINAL)"); +} + void tst_AST::objc_simple_class() { QSharedPointer unit(parseDeclaration("\n" -- cgit v1.2.1