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:
|
default:
|
||||||
break;
|
break;
|
||||||
}</snippet>
|
}</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>
|
</snippets>
|
||||||
|
@@ -2315,7 +2315,7 @@ signals:
|
|||||||
void newFooBarTestValue();
|
void newFooBarTestValue();
|
||||||
|
|
||||||
private:
|
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;
|
QTest::addRow("create right names") << QByteArrayList{originalSource, expectedSource} << 4;
|
||||||
@@ -2346,7 +2346,7 @@ signals:
|
|||||||
void newFooBarTestValue();
|
void newFooBarTestValue();
|
||||||
|
|
||||||
private:
|
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 = "";
|
expectedSource = "";
|
||||||
@@ -2355,7 +2355,7 @@ private:
|
|||||||
// create from Q_PROPERTY with custom names
|
// create from Q_PROPERTY with custom names
|
||||||
originalSource = R"-(
|
originalSource = R"-(
|
||||||
class Test {
|
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:
|
public:
|
||||||
int give_me_foo_bar_test() const
|
int give_me_foo_bar_test() const
|
||||||
@@ -2380,7 +2380,7 @@ signals:
|
|||||||
)-";
|
)-";
|
||||||
expectedSource = R"-(
|
expectedSource = R"-(
|
||||||
class Test {
|
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:
|
public:
|
||||||
int give_me_foo_bar_test() const
|
int give_me_foo_bar_test() const
|
||||||
@@ -2411,14 +2411,14 @@ private:
|
|||||||
// create from Q_PROPERTY with custom names
|
// create from Q_PROPERTY with custom names
|
||||||
originalSource = R"-(
|
originalSource = R"-(
|
||||||
class Test {
|
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;
|
int mem_fooBar_test;
|
||||||
public:
|
public:
|
||||||
};
|
};
|
||||||
)-";
|
)-";
|
||||||
expectedSource = R"-(
|
expectedSource = R"-(
|
||||||
class Test {
|
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;
|
int mem_fooBar_test;
|
||||||
public:
|
public:
|
||||||
int give_me_foo_bar_test() const
|
int give_me_foo_bar_test() const
|
||||||
@@ -2766,7 +2766,7 @@ public:
|
|||||||
signals:
|
signals:
|
||||||
void barChanged(N2::test *bar);
|
void barChanged(N2::test *bar);
|
||||||
private:
|
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);
|
testDocuments << CppTestDocument::create("file.h", original, expected);
|
||||||
@@ -3303,7 +3303,7 @@ void QuickfixTest::testGenerateGetterSetterAnonymousClass()
|
|||||||
void fooChanged();
|
void fooChanged();
|
||||||
|
|
||||||
private:
|
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;
|
} bar;
|
||||||
)";
|
)";
|
||||||
testDocuments << CppTestDocument::create("file.h", original, expected);
|
testDocuments << CppTestDocument::create("file.h", original, expected);
|
||||||
@@ -3334,7 +3334,7 @@ public:
|
|||||||
signals:
|
signals:
|
||||||
void barChanged();
|
void barChanged();
|
||||||
private:
|
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
|
inline int Foo::getBar() const
|
||||||
@@ -3560,8 +3560,8 @@ private:
|
|||||||
int m_bar;
|
int m_bar;
|
||||||
int bar2_;
|
int bar2_;
|
||||||
QString bar3;
|
QString bar3;
|
||||||
Q_PROPERTY(int bar2 READ getBar2 WRITE setBar2 RESET resetBar2 NOTIFY bar2Changed)
|
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)
|
Q_PROPERTY(QString bar3 READ getBar3 WRITE setBar3 RESET resetBar3 NOTIFY bar3Changed FINAL)
|
||||||
};
|
};
|
||||||
inline void Foo::resetBar()
|
inline void Foo::resetBar()
|
||||||
{
|
{
|
||||||
|
@@ -4182,7 +4182,7 @@ void GetterSetterRefactoringHelper::performGeneration(ExistingGetterSetterData d
|
|||||||
propertyDeclaration.append(QLatin1String(" NOTIFY ")).append(data.signalName);
|
propertyDeclaration.append(QLatin1String(" NOTIFY ")).append(data.signalName);
|
||||||
}
|
}
|
||||||
|
|
||||||
propertyDeclaration.append(QLatin1String(")\n"));
|
propertyDeclaration.append(QLatin1String(" FINAL)\n"));
|
||||||
addHeaderCode(InsertionPointLocator::Private, propertyDeclaration);
|
addHeaderCode(InsertionPointLocator::Private, propertyDeclaration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -330,7 +330,7 @@ void Internal::TextEditorPlugin::testSnippetParsing_data()
|
|||||||
<< QString::fromLatin1("\\\\$test\\\\\\\\$\\\\") << false << Parts();
|
<< QString::fromLatin1("\\\\$test\\\\\\\\$\\\\") << false << Parts();
|
||||||
|
|
||||||
QTest::newRow("Q_PROPERTY") << QString(
|
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
|
<< true
|
||||||
<< Parts{SnippetPart("Q_PROPERTY("),
|
<< Parts{SnippetPart("Q_PROPERTY("),
|
||||||
SnippetPart("type", 0),
|
SnippetPart("type", 0),
|
||||||
@@ -342,7 +342,7 @@ void Internal::TextEditorPlugin::testSnippetParsing_data()
|
|||||||
SnippetPart("name", 1, TCMANGLER_ID),
|
SnippetPart("name", 1, TCMANGLER_ID),
|
||||||
SnippetPart(" NOTIFY "),
|
SnippetPart(" NOTIFY "),
|
||||||
SnippetPart("name", 1),
|
SnippetPart("name", 1),
|
||||||
SnippetPart("Changed)")};
|
SnippetPart("Changed FINAL)")};
|
||||||
|
|
||||||
QTest::newRow("open identifier") << QString("$test") << false << Parts();
|
QTest::newRow("open identifier") << QString("$test") << false << Parts();
|
||||||
QTest::newRow("wrong mangler") << QString("$test:X$") << false << Parts();
|
QTest::newRow("wrong mangler") << QString("$test:X$") << false << Parts();
|
||||||
|
Reference in New Issue
Block a user