forked from qt-creator/qt-creator
C++ editor: Make generated Q_PROPERTYs FINAL by default
It's bad style to omit the FINAL because such properties can be shadowed, causing problems in QML. Change-Id: I9083c69128f6335f584f0a1d28f1fe1e54a02eaf Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
@@ -204,5 +204,5 @@ case $value$:
|
||||
default:
|
||||
break;
|
||||
}</snippet>
|
||||
<snippet group="C++" trigger="Q_PROPERTY" id="cpp_q_property" complement="(type name READ name WRITE setName NOTIFY nameChanged)">Q_PROPERTY($type$ $name$ READ $name$ WRITE set$name:c$ NOTIFY $name$Changed)</snippet>
|
||||
<snippet group="C++" trigger="Q_PROPERTY" id="cpp_q_property" complement="(type name READ name WRITE setName NOTIFY nameChanged FINAL)">Q_PROPERTY($type$ $name$ READ $name$ WRITE set$name:c$ NOTIFY $name$Changed FINAL)</snippet>
|
||||
</snippets>
|
||||
|
@@ -2315,7 +2315,7 @@ signals:
|
||||
void newFooBarTestValue();
|
||||
|
||||
private:
|
||||
Q_PROPERTY(int fooBar_test READ give_me_foo_bar_test WRITE Seet_FooBar_test RESET set_fooBarTest_toDefault NOTIFY newFooBarTestValue)
|
||||
Q_PROPERTY(int fooBar_test READ give_me_foo_bar_test WRITE Seet_FooBar_test RESET set_fooBarTest_toDefault NOTIFY newFooBarTestValue FINAL)
|
||||
};
|
||||
)-";
|
||||
QTest::addRow("create right names") << QByteArrayList{originalSource, expectedSource} << 4;
|
||||
@@ -2346,7 +2346,7 @@ signals:
|
||||
void newFooBarTestValue();
|
||||
|
||||
private:
|
||||
Q_PROPERTY(int fooBar_test READ give_me_foo_bar_test WRITE Seet_FooBar_test RESET set_fooBarTest_toDefault NOTIFY newFooBarTestValue)
|
||||
Q_PROPERTY(int fooBar_test READ give_me_foo_bar_test WRITE Seet_FooBar_test RESET set_fooBarTest_toDefault NOTIFY newFooBarTestValue FINAL)
|
||||
};
|
||||
)-";
|
||||
expectedSource = "";
|
||||
@@ -2355,7 +2355,7 @@ private:
|
||||
// create from Q_PROPERTY with custom names
|
||||
originalSource = R"-(
|
||||
class Test {
|
||||
Q_PROPER@TY(int fooBar_test READ give_me_foo_bar_test WRITE Seet_FooBar_test RESET set_fooBarTest_toDefault NOTIFY newFooBarTestValue)
|
||||
Q_PROPER@TY(int fooBar_test READ give_me_foo_bar_test WRITE Seet_FooBar_test RESET set_fooBarTest_toDefault NOTIFY newFooBarTestValue FINAL)
|
||||
|
||||
public:
|
||||
int give_me_foo_bar_test() const
|
||||
@@ -2380,7 +2380,7 @@ signals:
|
||||
)-";
|
||||
expectedSource = R"-(
|
||||
class Test {
|
||||
Q_PROPERTY(int fooBar_test READ give_me_foo_bar_test WRITE Seet_FooBar_test RESET set_fooBarTest_toDefault NOTIFY newFooBarTestValue)
|
||||
Q_PROPERTY(int fooBar_test READ give_me_foo_bar_test WRITE Seet_FooBar_test RESET set_fooBarTest_toDefault NOTIFY newFooBarTestValue FINAL)
|
||||
|
||||
public:
|
||||
int give_me_foo_bar_test() const
|
||||
@@ -2411,14 +2411,14 @@ private:
|
||||
// create from Q_PROPERTY with custom names
|
||||
originalSource = R"-(
|
||||
class Test {
|
||||
Q_PROPE@RTY(int fooBar_test READ give_me_foo_bar_test WRITE Seet_FooBar_test RESET set_fooBarTest_toDefault NOTIFY newFooBarTestValue)
|
||||
Q_PROPE@RTY(int fooBar_test READ give_me_foo_bar_test WRITE Seet_FooBar_test RESET set_fooBarTest_toDefault NOTIFY newFooBarTestValue FINAL)
|
||||
int mem_fooBar_test;
|
||||
public:
|
||||
};
|
||||
)-";
|
||||
expectedSource = R"-(
|
||||
class Test {
|
||||
Q_PROPERTY(int fooBar_test READ give_me_foo_bar_test WRITE Seet_FooBar_test RESET set_fooBarTest_toDefault NOTIFY newFooBarTestValue)
|
||||
Q_PROPERTY(int fooBar_test READ give_me_foo_bar_test WRITE Seet_FooBar_test RESET set_fooBarTest_toDefault NOTIFY newFooBarTestValue FINAL)
|
||||
int mem_fooBar_test;
|
||||
public:
|
||||
int give_me_foo_bar_test() const
|
||||
@@ -2766,7 +2766,7 @@ public:
|
||||
signals:
|
||||
void barChanged(N2::test *bar);
|
||||
private:
|
||||
Q_PROPERTY(N2::test *bar READ getBar NOTIFY barChanged)
|
||||
Q_PROPERTY(N2::test *bar READ getBar NOTIFY barChanged FINAL)
|
||||
};
|
||||
})--";
|
||||
testDocuments << CppTestDocument::create("file.h", original, expected);
|
||||
@@ -3303,7 +3303,7 @@ void QuickfixTest::testGenerateGetterSetterAnonymousClass()
|
||||
void fooChanged();
|
||||
|
||||
private:
|
||||
Q_PROPERTY(int foo READ foo WRITE setFoo RESET resetFoo NOTIFY fooChanged)
|
||||
Q_PROPERTY(int foo READ foo WRITE setFoo RESET resetFoo NOTIFY fooChanged FINAL)
|
||||
} bar;
|
||||
)";
|
||||
testDocuments << CppTestDocument::create("file.h", original, expected);
|
||||
@@ -3334,7 +3334,7 @@ public:
|
||||
signals:
|
||||
void barChanged();
|
||||
private:
|
||||
Q_PROPERTY(int bar READ getBar WRITE setBar RESET resetBar NOTIFY barChanged)
|
||||
Q_PROPERTY(int bar READ getBar WRITE setBar RESET resetBar NOTIFY barChanged FINAL)
|
||||
};
|
||||
|
||||
inline int Foo::getBar() const
|
||||
@@ -3560,8 +3560,8 @@ private:
|
||||
int m_bar;
|
||||
int bar2_;
|
||||
QString bar3;
|
||||
Q_PROPERTY(int bar2 READ getBar2 WRITE setBar2 RESET resetBar2 NOTIFY bar2Changed)
|
||||
Q_PROPERTY(QString bar3 READ getBar3 WRITE setBar3 RESET resetBar3 NOTIFY bar3Changed)
|
||||
Q_PROPERTY(int bar2 READ getBar2 WRITE setBar2 RESET resetBar2 NOTIFY bar2Changed FINAL)
|
||||
Q_PROPERTY(QString bar3 READ getBar3 WRITE setBar3 RESET resetBar3 NOTIFY bar3Changed FINAL)
|
||||
};
|
||||
inline void Foo::resetBar()
|
||||
{
|
||||
|
@@ -4182,7 +4182,7 @@ void GetterSetterRefactoringHelper::performGeneration(ExistingGetterSetterData d
|
||||
propertyDeclaration.append(QLatin1String(" NOTIFY ")).append(data.signalName);
|
||||
}
|
||||
|
||||
propertyDeclaration.append(QLatin1String(")\n"));
|
||||
propertyDeclaration.append(QLatin1String(" FINAL)\n"));
|
||||
addHeaderCode(InsertionPointLocator::Private, propertyDeclaration);
|
||||
}
|
||||
}
|
||||
|
@@ -330,7 +330,7 @@ void Internal::TextEditorPlugin::testSnippetParsing_data()
|
||||
<< QString::fromLatin1("\\\\$test\\\\\\\\$\\\\") << false << Parts();
|
||||
|
||||
QTest::newRow("Q_PROPERTY") << QString(
|
||||
"Q_PROPERTY($type$ $name$ READ $name$ WRITE set$name:c$ NOTIFY $name$Changed)")
|
||||
"Q_PROPERTY($type$ $name$ READ $name$ WRITE set$name:c$ NOTIFY $name$Changed FINAL)")
|
||||
<< true
|
||||
<< Parts{SnippetPart("Q_PROPERTY("),
|
||||
SnippetPart("type", 0),
|
||||
@@ -342,7 +342,7 @@ void Internal::TextEditorPlugin::testSnippetParsing_data()
|
||||
SnippetPart("name", 1, TCMANGLER_ID),
|
||||
SnippetPart(" NOTIFY "),
|
||||
SnippetPart("name", 1),
|
||||
SnippetPart("Changed)")};
|
||||
SnippetPart("Changed FINAL)")};
|
||||
|
||||
QTest::newRow("open identifier") << QString("$test") << false << Parts();
|
||||
QTest::newRow("wrong mangler") << QString("$test:X$") << false << Parts();
|
||||
|
Reference in New Issue
Block a user