forked from qt-creator/qt-creator
Clang: Let CppCodeModelSettings announce invalidated diagnostic configs
Change-Id: I1fe62d4cd4bc91bfd73e57ace6dc9a87d13b3537 Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -73,9 +73,12 @@ static QString tidyChecksKey()
|
||||
static QString clazyChecksKey()
|
||||
{ return QLatin1String(Constants::CPPTOOLS_CLAZY_CHECKS); }
|
||||
|
||||
void CppCodeModelSettings::fromSettings(QSettings *s)
|
||||
static ClangDiagnosticConfigs customDiagnosticConfigsFromSettings(QSettings *s)
|
||||
{
|
||||
s->beginGroup(QLatin1String(Constants::CPPTOOLS_SETTINGSGROUP));
|
||||
QTC_ASSERT(s->group() == QLatin1String(Constants::CPPTOOLS_SETTINGSGROUP),
|
||||
return ClangDiagnosticConfigs());
|
||||
|
||||
ClangDiagnosticConfigs configs;
|
||||
|
||||
const int size = s->beginReadArray(clangDiagnosticConfigsArrayKey());
|
||||
for (int i = 0; i < size; ++i) {
|
||||
@@ -85,14 +88,27 @@ void CppCodeModelSettings::fromSettings(QSettings *s)
|
||||
config.setId(Core::Id::fromSetting(s->value(clangDiagnosticConfigsArrayIdKey())));
|
||||
config.setDisplayName(s->value(clangDiagnosticConfigsArrayDisplayNameKey()).toString());
|
||||
config.setCommandLineWarnings(s->value(clangDiagnosticConfigsArrayWarningsKey()).toStringList());
|
||||
m_clangCustomDiagnosticConfigs.append(config);
|
||||
configs.append(config);
|
||||
}
|
||||
s->endArray();
|
||||
|
||||
const Core::Id diagnosticConfigId = Core::Id::fromSetting(
|
||||
s->value(clangDiagnosticConfigKey(),
|
||||
initialClangDiagnosticConfigId().toSetting()));
|
||||
setClangDiagnosticConfigId(diagnosticConfigId);
|
||||
return configs;
|
||||
}
|
||||
|
||||
static Core::Id clangDiagnosticConfigIdFromSettings(QSettings *s)
|
||||
{
|
||||
QTC_ASSERT(s->group() == QLatin1String(Constants::CPPTOOLS_SETTINGSGROUP), return Core::Id());
|
||||
|
||||
return Core::Id::fromSetting(
|
||||
s->value(clangDiagnosticConfigKey(), initialClangDiagnosticConfigId().toSetting()));
|
||||
}
|
||||
|
||||
void CppCodeModelSettings::fromSettings(QSettings *s)
|
||||
{
|
||||
s->beginGroup(QLatin1String(Constants::CPPTOOLS_SETTINGSGROUP));
|
||||
|
||||
setClangCustomDiagnosticConfigs(customDiagnosticConfigsFromSettings(s));
|
||||
setClangDiagnosticConfigId(clangDiagnosticConfigIdFromSettings(s));
|
||||
|
||||
const QVariant pchUsageVariant = s->value(pchUsageKey(), initialPchUsage());
|
||||
setPCHUsage(static_cast<PCHUsage>(pchUsageVariant.toInt()));
|
||||
@@ -120,6 +136,8 @@ void CppCodeModelSettings::fromSettings(QSettings *s)
|
||||
void CppCodeModelSettings::toSettings(QSettings *s)
|
||||
{
|
||||
s->beginGroup(QLatin1String(Constants::CPPTOOLS_SETTINGSGROUP));
|
||||
const ClangDiagnosticConfigs previousConfigs = customDiagnosticConfigsFromSettings(s);
|
||||
const Core::Id previousConfigId = clangDiagnosticConfigIdFromSettings(s);
|
||||
|
||||
s->beginWriteArray(clangDiagnosticConfigsArrayKey());
|
||||
for (int i = 0, size = m_clangCustomDiagnosticConfigs.size(); i < size; ++i) {
|
||||
@@ -143,6 +161,15 @@ void CppCodeModelSettings::toSettings(QSettings *s)
|
||||
|
||||
s->endGroup();
|
||||
|
||||
QVector<Core::Id> invalidated
|
||||
= ClangDiagnosticConfigsModel::changedOrRemovedConfigs(previousConfigs,
|
||||
m_clangCustomDiagnosticConfigs);
|
||||
|
||||
if (previousConfigId != clangDiagnosticConfigId() && !invalidated.contains(previousConfigId))
|
||||
invalidated.append(previousConfigId);
|
||||
|
||||
if (!invalidated.isEmpty())
|
||||
emit clangDiagnosticConfigsInvalidated(invalidated);
|
||||
emit changed();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user