aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/projectexplorer/lldparser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/projectexplorer/lldparser.cpp')
-rw-r--r--src/plugins/projectexplorer/lldparser.cpp22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/plugins/projectexplorer/lldparser.cpp b/src/plugins/projectexplorer/lldparser.cpp
index 179bd742d3..aee20ea795 100644
--- a/src/plugins/projectexplorer/lldparser.cpp
+++ b/src/plugins/projectexplorer/lldparser.cpp
@@ -35,12 +35,15 @@
namespace ProjectExplorer {
namespace Internal {
-void LldParser::stdError(const QString &line)
+Utils::OutputLineParser::Result LldParser::handleLine(const QString &line, Utils::OutputFormat type)
{
+ if (type != Utils::StdErrFormat)
+ return Status::NotHandled;
+
const QString trimmedLine = rightTrimmed(line);
if (trimmedLine.contains("error:") && trimmedLine.contains("lld")) {
- emit addTask(CompileTask(Task::Error, trimmedLine));
- return;
+ scheduleTask(CompileTask(Task::Error, trimmedLine), 1);
+ return Status::Done;
}
static const QStringList prefixes{">>> referenced by ", ">>> defined at ", ">>> "};
for (const QString &prefix : prefixes) {
@@ -62,12 +65,15 @@ void LldParser::stdError(const QString &line)
else
filePathOffset = prefix.length();
const int filePathLen = locOffset == -1 ? -1 : locOffset - filePathOffset;
- const auto file = Utils::FilePath::fromUserInput(
- trimmedLine.mid(filePathOffset, filePathLen).trimmed());
- emit addTask(CompileTask(Task::Unknown, trimmedLine.mid(4).trimmed(), file, lineNo));
- return;
+ const auto file = absoluteFilePath(Utils::FilePath::fromUserInput(
+ trimmedLine.mid(filePathOffset, filePathLen).trimmed()));
+ LinkSpecs linkSpecs;
+ addLinkSpecForAbsoluteFilePath(linkSpecs, file, lineNo, filePathOffset, filePathLen);
+ scheduleTask(CompileTask(Task::Unknown, trimmedLine.mid(4).trimmed(),
+ file, lineNo), 1);
+ return {Status::Done, linkSpecs};
}
- IOutputParser::stdError(line);
+ return Status::NotHandled;
}
} // namespace Internal