ProjectExplorer: Drop KitAspect::defaultValue()

The functionality of this function overlapped with KitAspect::setup(),
leading to unclear responsibilities and resulting in bugs such as the
one fixed by 776d54e435.
Therefore, we drop the defaultValue() function, merging its
implementation with setup() where applicable.

Change-Id: Iefa9c3df8b76e97ddf9ad388516621f7ea6558d4
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Christian Kandeler
2019-03-12 16:50:39 +01:00
parent e80d83cb20
commit d4565be655
17 changed files with 29 additions and 68 deletions

View File

@@ -80,9 +80,9 @@ AndroidGdbServerKitAspect::AndroidGdbServerKitAspect()
setPriority(27999); // Just one less than Debugger!
}
QVariant AndroidGdbServerKitAspect::defaultValue(const Kit *kit) const
void AndroidGdbServerKitAspect::setup(Kit *kit)
{
return autoDetect(kit).toString();
kit->setValue(id(), autoDetect(kit).toString());
}
QList<Task> AndroidGdbServerKitAspect::validate(const Kit *) const

View File

@@ -36,7 +36,7 @@ class AndroidGdbServerKitAspect : public ProjectExplorer::KitAspect
public:
AndroidGdbServerKitAspect();
QVariant defaultValue(const ProjectExplorer::Kit *) const override;
void setup(ProjectExplorer::Kit *) override;
QList<ProjectExplorer::Task> validate(const ProjectExplorer::Kit *) const override;
bool isApplicableToKit(const ProjectExplorer::Kit *k) const override;
ItemList toUserOutput(const ProjectExplorer::Kit *) const override;

View File

@@ -245,12 +245,6 @@ void CMakeKitAspect::setCMakeTool(Kit *k, const Core::Id id)
k->setValue(TOOL_ID, toSet.toSetting());
}
QVariant CMakeKitAspect::defaultValue(const Kit *k) const
{
const Core::Id id = k ? defaultCMakeToolId() : Core::Id();
return id.toSetting();
}
QList<Task> CMakeKitAspect::validate(const Kit *k) const
{
QList<Task> result;
@@ -275,7 +269,6 @@ void CMakeKitAspect::setup(Kit *k)
void CMakeKitAspect::fix(Kit *k)
{
if (!CMakeKitAspect::cmakeTool(k))
setup(k);
}

View File

@@ -47,7 +47,6 @@ public:
static void setCMakeTool(ProjectExplorer::Kit *k, const Core::Id id);
// KitAspect interface
QVariant defaultValue(const ProjectExplorer::Kit *k) const final;
QList<ProjectExplorer::Task> validate(const ProjectExplorer::Kit *k) const final;
void setup(ProjectExplorer::Kit *k) final;
void fix(ProjectExplorer::Kit *k) final;
@@ -78,13 +77,15 @@ public:
static QStringList generatorArguments(const ProjectExplorer::Kit *k);
// KitAspect interface
QVariant defaultValue(const ProjectExplorer::Kit *k) const final;
QList<ProjectExplorer::Task> validate(const ProjectExplorer::Kit *k) const final;
void setup(ProjectExplorer::Kit *k) final;
void fix(ProjectExplorer::Kit *k) final;
void upgrade(ProjectExplorer::Kit *k) final;
ItemList toUserOutput(const ProjectExplorer::Kit *k) const final;
ProjectExplorer::KitAspectWidget *createConfigWidget(ProjectExplorer::Kit *k) const final;
private:
QVariant defaultValue(const ProjectExplorer::Kit *k) const;
};
class CMakeConfigurationKitAspect : public ProjectExplorer::KitAspect
@@ -102,12 +103,14 @@ public:
static CMakeConfig defaultConfiguration(const ProjectExplorer::Kit *k);
// KitAspect interface
QVariant defaultValue(const ProjectExplorer::Kit *k) const final;
QList<ProjectExplorer::Task> validate(const ProjectExplorer::Kit *k) const final;
void setup(ProjectExplorer::Kit *k) final;
void fix(ProjectExplorer::Kit *k) final;
ItemList toUserOutput(const ProjectExplorer::Kit *k) const final;
ProjectExplorer::KitAspectWidget *createConfigWidget(ProjectExplorer::Kit *k) const final;
private:
QVariant defaultValue(const ProjectExplorer::Kit *k) const;
};
} // namespace Internal

View File

@@ -152,8 +152,6 @@ DebuggerKitAspect::DebuggerKitAspect()
setPriority(28000);
}
QVariant DebuggerKitAspect::defaultValue(const Kit *) const { return QVariant(); }
void DebuggerKitAspect::setup(Kit *k)
{
QTC_ASSERT(k, return);

View File

@@ -41,7 +41,6 @@ class DEBUGGER_EXPORT DebuggerKitAspect : public ProjectExplorer::KitAspect
public:
DebuggerKitAspect();
QVariant defaultValue(const ProjectExplorer::Kit *k) const override;
QList<ProjectExplorer::Task> validate(const ProjectExplorer::Kit *k) const override
{ return DebuggerKitAspect::validateDebugger(k); }

View File

@@ -137,8 +137,6 @@ public:
Kit::Kit(Id id) :
d(std::make_unique<Internal::KitPrivate>(id, this))
{
for (KitAspect *aspect : KitManager::kitAspects())
d->m_data.insert(aspect->id(), aspect->defaultValue(this));
}
Kit::Kit(const QVariantMap &data) :

View File

@@ -122,12 +122,6 @@ SysRootKitAspect::SysRootKitAspect()
setPriority(31000);
}
QVariant SysRootKitAspect::defaultValue(const Kit *k) const
{
Q_UNUSED(k)
return QString();
}
QList<Task> SysRootKitAspect::validate(const Kit *k) const
{
QList<Task> result;
@@ -375,12 +369,6 @@ static QVariant defaultToolChainValue()
return result;
}
QVariant ToolChainKitAspect::defaultValue(const Kit *k) const
{
Q_UNUSED(k);
return defaultToolChainValue();
}
QList<Task> ToolChainKitAspect::validate(const Kit *k) const
{
QList<Task> result;
@@ -494,7 +482,9 @@ void ToolChainKitAspect::setup(Kit *k)
QTC_ASSERT(ToolChainManager::isLoaded(), return);
QTC_ASSERT(k, return);
const QVariantMap value = k->value(ToolChainKitAspect::id()).toMap();
QVariantMap value = k->value(id()).toMap();
if (value.empty())
value = defaultToolChainValue().toMap();
for (auto i = value.constBegin(); i != value.constEnd(); ++i) {
Core::Id l = findLanguage(i.key());
@@ -813,10 +803,10 @@ DeviceTypeKitAspect::DeviceTypeKitAspect()
makeEssential();
}
QVariant DeviceTypeKitAspect::defaultValue(const Kit *k) const
void DeviceTypeKitAspect::setup(Kit *k)
{
Q_UNUSED(k);
return QByteArray(Constants::DESKTOP_DEVICE_TYPE);
if (k)
k->setValue(id(), QByteArray(Constants::DESKTOP_DEVICE_TYPE));
}
QList<Task> DeviceTypeKitAspect::validate(const Kit *k) const
@@ -1244,12 +1234,6 @@ EnvironmentKitAspect::EnvironmentKitAspect()
setPriority(29000);
}
QVariant EnvironmentKitAspect::defaultValue(const Kit *k) const
{
Q_UNUSED(k)
return QStringList();
}
QList<Task> EnvironmentKitAspect::validate(const Kit *k) const
{
QList<Task> result;

View File

@@ -50,7 +50,6 @@ class PROJECTEXPLORER_EXPORT SysRootKitAspect : public KitAspect
public:
SysRootKitAspect();
QVariant defaultValue(const Kit *k) const override;
QList<Task> validate(const Kit *k) const override;
KitAspectWidget *createConfigWidget(Kit *k) const override;
ItemList toUserOutput(const Kit *k) const override;
@@ -72,7 +71,6 @@ class PROJECTEXPLORER_EXPORT ToolChainKitAspect : public KitAspect
public:
ToolChainKitAspect();
QVariant defaultValue(const Kit *k) const override;
QList<Task> validate(const Kit *k) const override;
void upgrade(Kit *k) override;
void fix(Kit *k) override;
@@ -117,7 +115,7 @@ class PROJECTEXPLORER_EXPORT DeviceTypeKitAspect : public KitAspect
public:
DeviceTypeKitAspect();
QVariant defaultValue(const Kit *k) const override;
void setup(Kit *k);
QList<Task> validate(const Kit *k) const override;
KitAspectWidget *createConfigWidget(Kit *k) const override;
ItemList toUserOutput(const Kit *k) const override;
@@ -141,7 +139,6 @@ class PROJECTEXPLORER_EXPORT DeviceKitAspect : public KitAspect
public:
DeviceKitAspect();
QVariant defaultValue(const Kit *k) const override;
QList<Task> validate(const Kit *k) const override;
void fix(Kit *k) override;
void setup(Kit *k) override;
@@ -161,6 +158,8 @@ public:
static void setDeviceId(Kit *k, Core::Id dataId);
private:
QVariant defaultValue(const Kit *k) const;
void kitsWereLoaded();
void deviceUpdated(Core::Id dataId);
void devicesChanged();
@@ -178,7 +177,6 @@ class PROJECTEXPLORER_EXPORT EnvironmentKitAspect : public KitAspect
public:
EnvironmentKitAspect();
QVariant defaultValue(const Kit *k) const override;
QList<Task> validate(const Kit *k) const override;
void fix(Kit *k) override;

View File

@@ -250,7 +250,7 @@ void KitManager::registerKitAspect(std::unique_ptr<KitAspect> &&ki)
foreach (Kit *k, kits()) {
if (!k->hasValue(ki->id()))
k->setValue(ki->id(), ki->defaultValue(k));
ki->setup(k);
else
ki->fix(k);
}
@@ -452,7 +452,7 @@ void KitManager::completeKit(Kit *k)
for (const std::unique_ptr<KitAspect> &ki : d->m_informationList) {
ki->upgrade(k);
if (!k->hasValue(ki->id()))
k->setValue(ki->id(), ki->defaultValue(k));
ki->setup(k);
else
ki->fix(k);
}

View File

@@ -79,8 +79,6 @@ public:
QString description() const { return m_description; }
bool isEssential() const { return m_essential; }
virtual QVariant defaultValue(const Kit *) const = 0;
// called to find issues with the kit
virtual QList<Task> validate(const Kit *) const = 0;
// called after restoring a kit, so upgrading of kit information settings can be done

View File

@@ -107,7 +107,6 @@ Core::Id QbsKitAspect::id()
return "Qbs.KitInformation";
}
QVariant QbsKitAspect::defaultValue(const Kit *) const { return QString(); }
QList<Task> QbsKitAspect::validate(const Kit *) const { return QList<Task>(); }
KitAspect::ItemList QbsKitAspect::toUserOutput(const Kit *k) const

View File

@@ -44,7 +44,6 @@ public:
private:
static Core::Id id();
QVariant defaultValue(const ProjectExplorer::Kit *) const override;
QList<ProjectExplorer::Task> validate(const ProjectExplorer::Kit *) const override;
ItemList toUserOutput(const ProjectExplorer::Kit *) const override;
ProjectExplorer::KitAspectWidget *createConfigWidget(ProjectExplorer::Kit *) const override;

View File

@@ -91,12 +91,6 @@ QmakeKitAspect::QmakeKitAspect()
setPriority(24000);
}
QVariant QmakeKitAspect::defaultValue(const Kit *k) const
{
Q_UNUSED(k);
return QString();
}
QList<Task> QmakeKitAspect::validate(const Kit *k) const
{
QList<Task> result;

View File

@@ -37,7 +37,6 @@ class QmakeKitAspect : public ProjectExplorer::KitAspect
public:
QmakeKitAspect();
QVariant defaultValue(const ProjectExplorer::Kit *k) const override;
QList<ProjectExplorer::Task> validate(const ProjectExplorer::Kit *k) const override;
void setup(ProjectExplorer::Kit *k) override;

View File

@@ -161,20 +161,19 @@ QtKitAspect::QtKitAspect()
this, &QtKitAspect::kitsWereLoaded);
}
QVariant QtKitAspect::defaultValue(const Kit *k) const
void QtKitAspect::setup(ProjectExplorer::Kit *k)
{
Q_UNUSED(k);
// find "Qt in PATH":
BaseQtVersion *result = QtVersionManager::version(equal(&BaseQtVersion::autodetectionSource,
QString::fromLatin1("PATH")));
if (result)
return result->uniqueId();
if (!result) {
// Use *any* desktop Qt:
result = QtVersionManager::version(equal(&BaseQtVersion::type,
QString::fromLatin1(QtSupport::Constants::DESKTOPQT)));
return result ? result->uniqueId() : -1;
}
k->setValue(id(), result ? result->uniqueId() : -1);
}
QList<ProjectExplorer::Task> QtKitAspect::validate(const ProjectExplorer::Kit *k) const

View File

@@ -42,7 +42,7 @@ class QTSUPPORT_EXPORT QtKitAspect : public ProjectExplorer::KitAspect
public:
QtKitAspect();
QVariant defaultValue(const ProjectExplorer::Kit *k) const override;
void setup(ProjectExplorer::Kit *k) override;
QList<ProjectExplorer::Task> validate(const ProjectExplorer::Kit *k) const override;
void fix(ProjectExplorer::Kit *) override;