summaryrefslogtreecommitdiff
path: root/src/plugins/nim
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/nim')
-rw-r--r--src/plugins/nim/project/nimblebuildstep.cpp15
-rw-r--r--src/plugins/nim/project/nimblebuildsystem.cpp7
-rw-r--r--src/plugins/nim/project/nimbletaskstep.cpp4
-rw-r--r--src/plugins/nim/project/nimbletaskstep.h2
-rw-r--r--src/plugins/nim/project/nimcompilerbuildstep.cpp14
-rw-r--r--src/plugins/nim/project/nimcompilercleanstep.cpp35
-rw-r--r--src/plugins/nim/project/nimcompilercleanstep.h22
-rw-r--r--src/plugins/nim/project/nimtoolchain.cpp2
-rw-r--r--src/plugins/nim/project/nimtoolchain.h2
-rw-r--r--src/plugins/nim/project/nimtoolchainfactory.cpp2
-rw-r--r--src/plugins/nim/project/nimtoolchainfactory.h2
11 files changed, 50 insertions, 57 deletions
diff --git a/src/plugins/nim/project/nimblebuildstep.cpp b/src/plugins/nim/project/nimblebuildstep.cpp
index 43fb20da23..97014cc17a 100644
--- a/src/plugins/nim/project/nimblebuildstep.cpp
+++ b/src/plugins/nim/project/nimblebuildstep.cpp
@@ -111,8 +111,8 @@ bool NimbleBuildStep::init()
setOutputParser(parser);
ProcessParameters* params = processParameters();
- params->setEnvironment(buildConfiguration()->environment());
- params->setMacroExpander(buildConfiguration()->macroExpander());
+ params->setEnvironment(buildEnvironment());
+ params->setMacroExpander(macroExpander());
params->setWorkingDirectory(project()->projectDirectory());
params->setCommandLine({QStandardPaths::findExecutable("nimble"), {"build", m_arguments}});
return AbstractProcessStep::init();
@@ -156,13 +156,12 @@ QVariantMap NimbleBuildStep::toMap() const
QString NimbleBuildStep::defaultArguments() const
{
- QTC_ASSERT(buildConfiguration(), return {}; );
- switch (buildConfiguration()->buildType()) {
- case ProjectExplorer::BuildConfiguration::Debug:
+ switch (buildType()) {
+ case BuildConfiguration::Debug:
return {"--debugger:native"};
- case ProjectExplorer::BuildConfiguration::Unknown:
- case ProjectExplorer::BuildConfiguration::Profile:
- case ProjectExplorer::BuildConfiguration::Release:
+ case BuildConfiguration::Unknown:
+ case BuildConfiguration::Profile:
+ case BuildConfiguration::Release:
default:
return {};
}
diff --git a/src/plugins/nim/project/nimblebuildsystem.cpp b/src/plugins/nim/project/nimblebuildsystem.cpp
index 537000e357..ecfec5d3b0 100644
--- a/src/plugins/nim/project/nimblebuildsystem.cpp
+++ b/src/plugins/nim/project/nimblebuildsystem.cpp
@@ -134,7 +134,12 @@ NimbleBuildSystem::NimbleBuildSystem(Target *target)
void NimbleBuildSystem::triggerParsing()
{
- m_guard = guardParsingRun();
+ // Only allow one parsing run at the same time:
+ auto guard = guardParsingRun();
+ if (!guard.guardsProject())
+ return;
+ m_guard = std::move(guard);
+
m_projectScanner.startScan();
}
diff --git a/src/plugins/nim/project/nimbletaskstep.cpp b/src/plugins/nim/project/nimbletaskstep.cpp
index 61cfb8f66e..f5f95160d3 100644
--- a/src/plugins/nim/project/nimbletaskstep.cpp
+++ b/src/plugins/nim/project/nimbletaskstep.cpp
@@ -31,6 +31,8 @@
#include <projectexplorer/buildstep.h>
#include <projectexplorer/buildconfiguration.h>
#include <projectexplorer/processparameters.h>
+#include <projectexplorer/projectexplorerconstants.h>
+
#include <utils/fileutils.h>
#include <QStandardPaths>
@@ -47,7 +49,7 @@ NimbleTaskStep::NimbleTaskStep(BuildStepList *parentList, Core::Id id)
bool NimbleTaskStep::init()
{
- processParameters()->setEnvironment(buildConfiguration()->environment());
+ processParameters()->setEnvironment(buildEnvironment());
processParameters()->setWorkingDirectory(project()->projectDirectory());
return validate() && AbstractProcessStep::init();
}
diff --git a/src/plugins/nim/project/nimbletaskstep.h b/src/plugins/nim/project/nimbletaskstep.h
index f8e7d375d4..15e67885cd 100644
--- a/src/plugins/nim/project/nimbletaskstep.h
+++ b/src/plugins/nim/project/nimbletaskstep.h
@@ -25,7 +25,7 @@
#pragma once
-#include <projectexplorer/processstep.h>
+#include <projectexplorer/abstractprocessstep.h>
namespace Nim {
diff --git a/src/plugins/nim/project/nimcompilerbuildstep.cpp b/src/plugins/nim/project/nimcompilerbuildstep.cpp
index 5159e45946..521c038afd 100644
--- a/src/plugins/nim/project/nimcompilerbuildstep.cpp
+++ b/src/plugins/nim/project/nimcompilerbuildstep.cpp
@@ -106,7 +106,7 @@ NimCompilerBuildStep::NimCompilerBuildStep(BuildStepList *parentList, Core::Id i
this, &NimCompilerBuildStep::updateProcessParameters);
connect(this, &NimCompilerBuildStep::outFilePathChanged,
bc, &NimBuildConfiguration::outFilePathChanged);
- connect(bc->target()->project(), &ProjectExplorer::Project::fileListChanged,
+ connect(project(), &ProjectExplorer::Project::fileListChanged,
this, &NimCompilerBuildStep::updateTargetNimFile);
updateProcessParameters();
}
@@ -208,17 +208,13 @@ void NimCompilerBuildStep::updateProcessParameters()
void NimCompilerBuildStep::updateOutFilePath()
{
- auto bc = qobject_cast<NimBuildConfiguration *>(buildConfiguration());
- QTC_ASSERT(bc, return);
const QString targetName = Utils::HostOsInfo::withExecutableSuffix(m_targetNimFile.toFileInfo().baseName());
- setOutFilePath(bc->buildDirectory().pathAppended(targetName));
+ setOutFilePath(buildDirectory().pathAppended(targetName));
}
void NimCompilerBuildStep::updateWorkingDirectory()
{
- auto bc = qobject_cast<NimBuildConfiguration *>(buildConfiguration());
- QTC_ASSERT(bc, return);
- processParameters()->setWorkingDirectory(bc->buildDirectory());
+ processParameters()->setWorkingDirectory(buildDirectory());
}
void NimCompilerBuildStep::updateCommand()
@@ -257,9 +253,7 @@ void NimCompilerBuildStep::updateCommand()
void NimCompilerBuildStep::updateEnvironment()
{
- auto bc = qobject_cast<NimBuildConfiguration *>(buildConfiguration());
- QTC_ASSERT(bc, return);
- processParameters()->setEnvironment(bc->environment());
+ processParameters()->setEnvironment(buildEnvironment());
}
void NimCompilerBuildStep::updateTargetNimFile()
diff --git a/src/plugins/nim/project/nimcompilercleanstep.cpp b/src/plugins/nim/project/nimcompilercleanstep.cpp
index 570df83e58..3fce967a34 100644
--- a/src/plugins/nim/project/nimcompilercleanstep.cpp
+++ b/src/plugins/nim/project/nimcompilercleanstep.cpp
@@ -40,6 +40,24 @@ using namespace Utils;
namespace Nim {
+class NimCompilerCleanStep final : public BuildStep
+{
+ Q_DECLARE_TR_FUNCTIONS(Nim::NimCompilerCleanStep)
+
+public:
+ NimCompilerCleanStep(BuildStepList *parentList, Core::Id id);
+
+private:
+ bool init() final;
+ void doRun() final;
+ void doCancel() final {} // Can be left empty. The run() function hardly does anything.
+
+ bool removeCacheDirectory();
+ bool removeOutFilePath();
+
+ Utils::FilePath m_buildDir;
+};
+
NimCompilerCleanStep::NimCompilerCleanStep(BuildStepList *parentList, Core::Id id)
: BuildStep(parentList, id)
{
@@ -51,14 +69,14 @@ NimCompilerCleanStep::NimCompilerCleanStep(BuildStepList *parentList, Core::Id i
workingDirectory->setDisplayStyle(BaseStringAspect::LineEditDisplay);
setSummaryUpdater([this, workingDirectory] {
- workingDirectory->setFilePath(buildConfiguration()->buildDirectory());
+ workingDirectory->setFilePath(buildDirectory());
return displayName();
});
}
bool NimCompilerCleanStep::init()
{
- FilePath buildDir = buildConfiguration()->buildDirectory();
+ FilePath buildDir = buildDirectory();
bool result = buildDir.exists();
if (result)
m_buildDir = buildDir;
@@ -68,32 +86,27 @@ bool NimCompilerCleanStep::init()
void NimCompilerCleanStep::doRun()
{
if (!m_buildDir.exists()) {
- emit addOutput(tr("Build directory \"%1\" does not exist.").arg(m_buildDir.toUserOutput()), BuildStep::OutputFormat::ErrorMessage);
+ emit addOutput(tr("Build directory \"%1\" does not exist.").arg(m_buildDir.toUserOutput()), OutputFormat::ErrorMessage);
emit finished(false);
return;
}
if (!removeCacheDirectory()) {
- emit addOutput(tr("Failed to delete the cache directory."), BuildStep::OutputFormat::ErrorMessage);
+ emit addOutput(tr("Failed to delete the cache directory."), OutputFormat::ErrorMessage);
emit finished(false);
return;
}
if (!removeOutFilePath()) {
- emit addOutput(tr("Failed to delete the out file."), BuildStep::OutputFormat::ErrorMessage);
+ emit addOutput(tr("Failed to delete the out file."), OutputFormat::ErrorMessage);
emit finished(false);
return;
}
- emit addOutput(tr("Clean step completed successfully."), BuildStep::OutputFormat::NormalMessage);
+ emit addOutput(tr("Clean step completed successfully."), OutputFormat::NormalMessage);
emit finished(true);
}
-void NimCompilerCleanStep::doCancel()
-{
- // Can be left empty. The run() function hardly does anything.
-}
-
bool NimCompilerCleanStep::removeCacheDirectory()
{
auto bc = qobject_cast<NimBuildConfiguration*>(buildConfiguration());
diff --git a/src/plugins/nim/project/nimcompilercleanstep.h b/src/plugins/nim/project/nimcompilercleanstep.h
index 483d627b9e..4086cf7275 100644
--- a/src/plugins/nim/project/nimcompilercleanstep.h
+++ b/src/plugins/nim/project/nimcompilercleanstep.h
@@ -26,30 +26,10 @@
#pragma once
#include <projectexplorer/buildstep.h>
-#include <projectexplorer/buildsteplist.h>
-#include <utils/fileutils.h>
namespace Nim {
-class NimCompilerCleanStep : public ProjectExplorer::BuildStep
-{
- Q_OBJECT
-
-public:
- NimCompilerCleanStep(ProjectExplorer::BuildStepList *parentList, Core::Id id);
-
-private:
- bool init() override;
- void doRun() override;
- void doCancel() override;
-
- bool removeCacheDirectory();
- bool removeOutFilePath();
-
- Utils::FilePath m_buildDir;
-};
-
-class NimCompilerCleanStepFactory : public ProjectExplorer::BuildStepFactory
+class NimCompilerCleanStepFactory final : public ProjectExplorer::BuildStepFactory
{
public:
NimCompilerCleanStepFactory();
diff --git a/src/plugins/nim/project/nimtoolchain.cpp b/src/plugins/nim/project/nimtoolchain.cpp
index 6a922f9553..031557c889 100644
--- a/src/plugins/nim/project/nimtoolchain.cpp
+++ b/src/plugins/nim/project/nimtoolchain.cpp
@@ -49,7 +49,7 @@ NimToolChain::NimToolChain(Core::Id typeId)
, m_version(std::make_tuple(-1,-1,-1))
{
setLanguage(Constants::C_NIMLANGUAGE_ID);
- setTypeDisplayName(NimToolChainFactory::tr("Nim"));
+ setTypeDisplayName(tr("Nim"));
}
Abi NimToolChain::targetAbi() const
diff --git a/src/plugins/nim/project/nimtoolchain.h b/src/plugins/nim/project/nimtoolchain.h
index 84b449d11d..a140f1444f 100644
--- a/src/plugins/nim/project/nimtoolchain.h
+++ b/src/plugins/nim/project/nimtoolchain.h
@@ -32,6 +32,8 @@ namespace Nim {
class NimToolChain : public ProjectExplorer::ToolChain
{
+ Q_DECLARE_TR_FUNCTIONS(Nim::NimToolChain)
+
public:
NimToolChain();
explicit NimToolChain(Core::Id typeId);
diff --git a/src/plugins/nim/project/nimtoolchainfactory.cpp b/src/plugins/nim/project/nimtoolchainfactory.cpp
index 7467ab7789..b79bad1969 100644
--- a/src/plugins/nim/project/nimtoolchainfactory.cpp
+++ b/src/plugins/nim/project/nimtoolchainfactory.cpp
@@ -42,7 +42,7 @@ namespace Nim {
NimToolChainFactory::NimToolChainFactory()
{
- setDisplayName(tr("Nim"));
+ setDisplayName(NimToolChain::tr("Nim"));
setSupportedToolChainType(Constants::C_NIMTOOLCHAIN_TYPEID);
setSupportedLanguages({Constants::C_NIMLANGUAGE_ID});
setToolchainConstructor([] { return new NimToolChain; });
diff --git a/src/plugins/nim/project/nimtoolchainfactory.h b/src/plugins/nim/project/nimtoolchainfactory.h
index 0b79653400..1e9e219e97 100644
--- a/src/plugins/nim/project/nimtoolchainfactory.h
+++ b/src/plugins/nim/project/nimtoolchainfactory.h
@@ -36,8 +36,6 @@ class NimToolChain;
class NimToolChainFactory : public ProjectExplorer::ToolChainFactory
{
- Q_OBJECT
-
public:
NimToolChainFactory();