Nim: Pass on parse errors to issues pane

When parsing the config of a nim project we may have
parser issues that might be of interest for the user.

Change-Id: Iefec8194fe625110579cda8cf840e03945e677b9
Reviewed-by: Filippo Cucchetto <filippocucchetto@gmail.com>
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Christian Stenger
2021-03-17 13:18:53 +01:00
parent 5c713d624c
commit a125535788
3 changed files with 21 additions and 0 deletions

View File

@@ -65,6 +65,9 @@ const QString C_NIMCOMPILERBUILDSTEP_TARGETNIMFILE = QStringLiteral("Nim.NimComp
// NimCompilerCleanStep // NimCompilerCleanStep
const char C_NIMCOMPILERCLEANSTEP_ID[] = "Nim.NimCompilerCleanStep"; const char C_NIMCOMPILERCLEANSTEP_ID[] = "Nim.NimCompilerCleanStep";
// Nim task category (Issues pane)
const char C_NIMPARSE_ID[] = "Nim.NimParse";
const char C_NIMLANGUAGE_ID[] = "Nim"; const char C_NIMLANGUAGE_ID[] = "Nim";
const char C_NIMCODESTYLESETTINGSPAGE_ID[] = "Nim.NimCodeStyleSettings"; const char C_NIMCODESTYLESETTINGSPAGE_ID[] = "Nim.NimCodeStyleSettings";
const char C_NIMCODESTYLESETTINGSPAGE_DISPLAY[] = QT_TRANSLATE_NOOP("NimCodeStyleSettingsPage", "Code Style"); const char C_NIMCODESTYLESETTINGSPAGE_DISPLAY[] = QT_TRANSLATE_NOOP("NimCodeStyleSettingsPage", "Code Style");

View File

@@ -49,6 +49,7 @@
#include <projectexplorer/projectmanager.h> #include <projectexplorer/projectmanager.h>
#include <projectexplorer/toolchainmanager.h> #include <projectexplorer/toolchainmanager.h>
#include <projectexplorer/runcontrol.h> #include <projectexplorer/runcontrol.h>
#include <projectexplorer/taskhub.h>
#include <texteditor/snippets/snippetprovider.h> #include <texteditor/snippets/snippetprovider.h>
using namespace Utils; using namespace Utils;
@@ -135,6 +136,7 @@ void NimPlugin::extensionsInitialized()
Core::FileIconProvider::registerIconOverlayForMimeType(icon, Constants::C_NIM_SCRIPT_MIMETYPE); Core::FileIconProvider::registerIconOverlayForMimeType(icon, Constants::C_NIM_SCRIPT_MIMETYPE);
Core::FileIconProvider::registerIconOverlayForMimeType(icon, Constants::C_NIMBLE_MIMETYPE); Core::FileIconProvider::registerIconOverlayForMimeType(icon, Constants::C_NIMBLE_MIMETYPE);
} }
TaskHub::addCategory(Constants::C_NIMPARSE_ID, "Nim");
} }
} // namespace Nim } // namespace Nim

View File

@@ -28,8 +28,10 @@
#include "nimbuildsystem.h" #include "nimbuildsystem.h"
#include "nimbleproject.h" #include "nimbleproject.h"
#include "nimproject.h" #include "nimproject.h"
#include "../nimconstants.h"
#include <projectexplorer/target.h> #include <projectexplorer/target.h>
#include <projectexplorer/taskhub.h>
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
@@ -60,6 +62,13 @@ static std::vector<NimbleTask> parseTasks(const QString &nimblePath, const QStri
std::vector<NimbleTask> result; std::vector<NimbleTask> result;
if (process.exitCode() != 0) {
TaskHub::addTask(Task(Task::Error,
QString::fromUtf8(process.readAllStandardOutput()),
{}, -1, Constants::C_NIMPARSE_ID));
return result;
}
const QList<QByteArray> &lines = linesFromProcessOutput(&process); const QList<QByteArray> &lines = linesFromProcessOutput(&process);
for (const QByteArray &line : lines) { for (const QByteArray &line : lines) {
@@ -82,6 +91,12 @@ static NimbleMetadata parseMetadata(const QString &nimblePath, const QString &wo
NimbleMetadata result = {}; NimbleMetadata result = {};
if (process.exitCode() != 0) {
TaskHub::addTask(Task(Task::Error,
QString::fromUtf8(process.readAllStandardOutput()),
{}, -1, Constants::C_NIMPARSE_ID));
return result;
}
const QList<QByteArray> &lines = linesFromProcessOutput(&process); const QList<QByteArray> &lines = linesFromProcessOutput(&process);
for (const QByteArray &line : lines) { for (const QByteArray &line : lines) {
@@ -153,6 +168,7 @@ void NimbleBuildSystem::triggerParsing()
void NimbleBuildSystem::updateProject() void NimbleBuildSystem::updateProject()
{ {
TaskHub::clearTasks(Constants::C_NIMPARSE_ID);
const FilePath projectDir = projectDirectory(); const FilePath projectDir = projectDirectory();
const FilePath nimble = Nim::nimblePathFromKit(kit()); const FilePath nimble = Nim::nimblePathFromKit(kit());