forked from qt-creator/qt-creator
Clang: turn off delayed template parsing
Fix templates highlight and completion on Windows Add UI to turn on/off delayed parsing (off by default) Task-number: QTCREATORBUG-17222 Change-Id: I0cd5e0bcfff2789cd938e4096829f777ff15957a Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
This commit is contained in:
@@ -47,14 +47,14 @@ void ClangDiagnosticConfig::setDisplayName(const QString &displayName)
|
||||
m_displayName = displayName;
|
||||
}
|
||||
|
||||
QStringList ClangDiagnosticConfig::commandLineOptions() const
|
||||
QStringList ClangDiagnosticConfig::commandLineWarnings() const
|
||||
{
|
||||
return m_commandLineOptions;
|
||||
return m_commandLineWarnings;
|
||||
}
|
||||
|
||||
void ClangDiagnosticConfig::setCommandLineOptions(const QStringList &options)
|
||||
void ClangDiagnosticConfig::setCommandLineWarnings(const QStringList &warnings)
|
||||
{
|
||||
m_commandLineOptions = options;
|
||||
m_commandLineWarnings = warnings;
|
||||
}
|
||||
|
||||
bool ClangDiagnosticConfig::isReadOnly() const
|
||||
@@ -71,7 +71,7 @@ bool ClangDiagnosticConfig::operator==(const ClangDiagnosticConfig &other) const
|
||||
{
|
||||
return m_id == other.m_id
|
||||
&& m_displayName == other.m_displayName
|
||||
&& m_commandLineOptions == other.m_commandLineOptions
|
||||
&& m_commandLineWarnings == other.m_commandLineWarnings
|
||||
&& m_isReadOnly == other.m_isReadOnly;
|
||||
}
|
||||
|
||||
|
||||
@@ -43,8 +43,8 @@ public:
|
||||
QString displayName() const;
|
||||
void setDisplayName(const QString &displayName);
|
||||
|
||||
QStringList commandLineOptions() const;
|
||||
void setCommandLineOptions(const QStringList &commandLineOptions);
|
||||
QStringList commandLineWarnings() const;
|
||||
void setCommandLineWarnings(const QStringList &commandLineWarnings);
|
||||
|
||||
bool isReadOnly() const;
|
||||
void setIsReadOnly(bool isReadOnly);
|
||||
@@ -54,7 +54,7 @@ public:
|
||||
private:
|
||||
Core::Id m_id;
|
||||
QString m_displayName;
|
||||
QStringList m_commandLineOptions;
|
||||
QStringList m_commandLineWarnings;
|
||||
bool m_isReadOnly = false;
|
||||
};
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
namespace CppTools {
|
||||
|
||||
static QStringList commonOptions()
|
||||
static QStringList commonWarnings()
|
||||
{
|
||||
return { QStringLiteral("-Wno-unknown-pragmas") };
|
||||
}
|
||||
@@ -45,10 +45,10 @@ static void addConfigForQuestionableConstructs(ClangDiagnosticConfigsModel &mode
|
||||
config.setDisplayName(QCoreApplication::translate("ClangDiagnosticConfigsModel",
|
||||
"Warnings for questionable constructs"));
|
||||
config.setIsReadOnly(true);
|
||||
config.setCommandLineOptions(QStringList{
|
||||
config.setCommandLineWarnings(QStringList{
|
||||
QStringLiteral("-Wall"),
|
||||
QStringLiteral("-Wextra"),
|
||||
} + commonOptions());
|
||||
} + commonWarnings());
|
||||
|
||||
model.appendOrUpdate(config);
|
||||
}
|
||||
@@ -60,7 +60,7 @@ static void addConfigForPedanticWarnings(ClangDiagnosticConfigsModel &model)
|
||||
config.setDisplayName(QCoreApplication::translate("ClangDiagnosticConfigsModel",
|
||||
"Pedantic Warnings"));
|
||||
config.setIsReadOnly(true);
|
||||
config.setCommandLineOptions(QStringList{QStringLiteral("-Wpedantic")} + commonOptions());
|
||||
config.setCommandLineWarnings(QStringList{QStringLiteral("-Wpedantic")} + commonWarnings());
|
||||
|
||||
model.appendOrUpdate(config);
|
||||
}
|
||||
@@ -72,7 +72,7 @@ static void addConfigForAlmostEveryWarning(ClangDiagnosticConfigsModel &model)
|
||||
config.setDisplayName(QCoreApplication::translate("ClangDiagnosticConfigsModel",
|
||||
"Warnings for almost everything"));
|
||||
config.setIsReadOnly(true);
|
||||
config.setCommandLineOptions(QStringList{
|
||||
config.setCommandLineWarnings(QStringList{
|
||||
QStringLiteral("-Weverything"),
|
||||
QStringLiteral("-Wno-c++98-compat"),
|
||||
QStringLiteral("-Wno-c++98-compat-pedantic"),
|
||||
@@ -85,7 +85,7 @@ static void addConfigForAlmostEveryWarning(ClangDiagnosticConfigsModel &model)
|
||||
QStringLiteral("-Wno-shadow"),
|
||||
QStringLiteral("-Wno-missing-prototypes"), // Not optimal for C projects.
|
||||
QStringLiteral("-Wno-used-but-marked-unused"), // e.g. QTest::qWait
|
||||
} + commonOptions());
|
||||
} + commonWarnings());
|
||||
|
||||
model.appendOrUpdate(config);
|
||||
}
|
||||
|
||||
@@ -115,7 +115,7 @@ void ClangDiagnosticConfigsWidget::onDiagnosticOptionsEdited()
|
||||
= diagnosticOptions.trimmed().split(QLatin1Char(' '), QString::SkipEmptyParts);
|
||||
|
||||
ClangDiagnosticConfig updatedConfig = currentConfig();
|
||||
updatedConfig.setCommandLineOptions(updatedCommandLine);
|
||||
updatedConfig.setCommandLineWarnings(updatedCommandLine);
|
||||
|
||||
m_diagnosticConfigsModel.appendOrUpdate(updatedConfig);
|
||||
emit customConfigsChanged(customConfigs());
|
||||
@@ -127,15 +127,6 @@ void ClangDiagnosticConfigsWidget::syncWidgetsToModel(const Core::Id &configToSe
|
||||
syncOtherWidgetsToComboBox();
|
||||
}
|
||||
|
||||
static QString displayNameWithBuiltinIndication(const ClangDiagnosticConfig &config,
|
||||
const Core::Id &exceptionalConfig)
|
||||
{
|
||||
if (exceptionalConfig == config.id())
|
||||
return config.displayName();
|
||||
|
||||
return ClangDiagnosticConfigsModel::displayNameWithBuiltinIndication(config);
|
||||
}
|
||||
|
||||
void ClangDiagnosticConfigsWidget::syncConfigChooserToModel(const Core::Id &configToSelect)
|
||||
{
|
||||
disconnectConfigChooserCurrentIndex();
|
||||
@@ -148,7 +139,7 @@ void ClangDiagnosticConfigsWidget::syncConfigChooserToModel(const Core::Id &conf
|
||||
for (int i = 0; i < size; ++i) {
|
||||
const ClangDiagnosticConfig &config = m_diagnosticConfigsModel.at(i);
|
||||
const QString displayName
|
||||
= displayNameWithBuiltinIndication(config, m_configWithUndecoratedDisplayName);
|
||||
= ClangDiagnosticConfigsModel::displayNameWithBuiltinIndication(config);
|
||||
m_ui->configChooserComboBox->addItem(displayName, config.id().toSetting());
|
||||
|
||||
if (configToSelect == config.id())
|
||||
@@ -176,8 +167,8 @@ void ClangDiagnosticConfigsWidget::syncOtherWidgetsToComboBox()
|
||||
m_ui->removeButton->setEnabled(!config.isReadOnly());
|
||||
|
||||
// Update child widgets
|
||||
const QString commandLineOptions = config.commandLineOptions().join(QLatin1Char(' '));
|
||||
setDiagnosticOptions(commandLineOptions);
|
||||
const QString commandLineWarnings = config.commandLineWarnings().join(QLatin1Char(' '));
|
||||
setDiagnosticOptions(commandLineWarnings);
|
||||
m_ui->diagnosticOptionsTextEdit->setReadOnly(config.isReadOnly());
|
||||
}
|
||||
|
||||
@@ -228,11 +219,6 @@ void ClangDiagnosticConfigsWidget::disconnectDiagnosticOptionsChanged()
|
||||
this, &ClangDiagnosticConfigsWidget::onDiagnosticOptionsEdited);
|
||||
}
|
||||
|
||||
void ClangDiagnosticConfigsWidget::setConfigWithUndecoratedDisplayName(const Core::Id &id)
|
||||
{
|
||||
m_configWithUndecoratedDisplayName = id;
|
||||
}
|
||||
|
||||
Core::Id ClangDiagnosticConfigsWidget::currentConfigId() const
|
||||
{
|
||||
return Core::Id::fromSetting(m_ui->configChooserComboBox->currentData());
|
||||
|
||||
@@ -50,7 +50,6 @@ public:
|
||||
Core::Id currentConfigId() const;
|
||||
ClangDiagnosticConfigs customConfigs() const;
|
||||
|
||||
void setConfigWithUndecoratedDisplayName(const Core::Id &id);
|
||||
void refresh(const ClangDiagnosticConfigsModel &diagnosticConfigsModel,
|
||||
const Core::Id &configToSelect);
|
||||
|
||||
@@ -82,7 +81,6 @@ private:
|
||||
private:
|
||||
Ui::ClangDiagnosticConfigsWidget *m_ui;
|
||||
ClangDiagnosticConfigsModel m_diagnosticConfigsModel;
|
||||
Core::Id m_configWithUndecoratedDisplayName;
|
||||
};
|
||||
|
||||
} // CppTools namespace
|
||||
|
||||
@@ -52,7 +52,7 @@ static QString clangDiagnosticConfigsArrayIdKey()
|
||||
static QString clangDiagnosticConfigsArrayDisplayNameKey()
|
||||
{ return QLatin1String("displayName"); }
|
||||
|
||||
static QString clangDiagnosticConfigsArrayOptionsKey()
|
||||
static QString clangDiagnosticConfigsArrayWarningsKey()
|
||||
{ return QLatin1String("diagnosticOptions"); }
|
||||
|
||||
static QString pchUsageKey()
|
||||
@@ -78,7 +78,7 @@ void CppCodeModelSettings::fromSettings(QSettings *s)
|
||||
ClangDiagnosticConfig config;
|
||||
config.setId(Core::Id::fromSetting(s->value(clangDiagnosticConfigsArrayIdKey())));
|
||||
config.setDisplayName(s->value(clangDiagnosticConfigsArrayDisplayNameKey()).toString());
|
||||
config.setCommandLineOptions(s->value(clangDiagnosticConfigsArrayOptionsKey()).toStringList());
|
||||
config.setCommandLineWarnings(s->value(clangDiagnosticConfigsArrayWarningsKey()).toStringList());
|
||||
m_clangCustomDiagnosticConfigs.append(config);
|
||||
}
|
||||
s->endArray();
|
||||
@@ -117,7 +117,7 @@ void CppCodeModelSettings::toSettings(QSettings *s)
|
||||
s->setArrayIndex(i);
|
||||
s->setValue(clangDiagnosticConfigsArrayIdKey(), config.id().toSetting());
|
||||
s->setValue(clangDiagnosticConfigsArrayDisplayNameKey(), config.displayName());
|
||||
s->setValue(clangDiagnosticConfigsArrayOptionsKey(), config.commandLineOptions());
|
||||
s->setValue(clangDiagnosticConfigsArrayWarningsKey(), config.commandLineWarnings());
|
||||
}
|
||||
s->endArray();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user