diff --git a/src/plugins/projectexplorer/linuxiccparser.cpp b/src/plugins/projectexplorer/linuxiccparser.cpp index 1957b2ffb7d389545edb7d2f2ff8f0bb486d35df..3516df16612874ce1f7d4def71e25d4e22b51cb5 100644 --- a/src/plugins/projectexplorer/linuxiccparser.cpp +++ b/src/plugins/projectexplorer/linuxiccparser.cpp @@ -36,7 +36,7 @@ using namespace ProjectExplorer; LinuxIccParser::LinuxIccParser() - : m_expectFirstLine(true), m_indent(0) + : m_expectFirstLine(true), m_indent(0), m_temporary(Task()) { // main.cpp(53): error #308: function \"AClass::privatefunc\" (declared at line 4 of \"main.h\") is inaccessible @@ -59,22 +59,24 @@ LinuxIccParser::LinuxIccParser() appendOutputParser(new LdParser); } +LinuxIccParser::~LinuxIccParser() +{ + if (!m_temporary.isNull()) + addTask(m_temporary); +} + void LinuxIccParser::stdError(const QString &line) { if (m_expectFirstLine && m_firstLine.indexIn(line) != -1) { // Clear out old task - m_temporary = ProjectExplorer::Task(); - m_temporary.file = m_firstLine.cap(1); - m_temporary.line = m_firstLine.cap(2).toInt(); + m_temporary = ProjectExplorer::Task(Task::Unknown, m_firstLine.cap(6).trimmed(), + m_firstLine.cap(1), m_firstLine.cap(2).toInt(), + QLatin1String(Constants::TASK_CATEGORY_COMPILE)); QString category = m_firstLine.cap(4); if (category == QLatin1String("error")) m_temporary.type = Task::Error; else if (category == QLatin1String("warning")) m_temporary.type = Task::Warning; - else - m_temporary.type = Task::Unknown; - m_temporary.category = Constants::TASK_CATEGORY_COMPILE; - m_temporary.description = m_firstLine.cap(6).trimmed(); m_expectFirstLine = false; } else if (!m_expectFirstLine && m_caretLine.indexIn(line) != -1) { @@ -93,6 +95,7 @@ void LinuxIccParser::stdError(const QString &line) } else if (!m_expectFirstLine && line.trimmed().isEmpty()) { // last Line m_expectFirstLine = true; emit addTask(m_temporary); + m_temporary = Task(); } else if (!m_expectFirstLine && m_continuationLines.indexIn(line) != -1) { m_temporary.description.append("\n"); m_indent = 0; diff --git a/src/plugins/projectexplorer/linuxiccparser.h b/src/plugins/projectexplorer/linuxiccparser.h index b557a4ae12c3acfd805ff238aab985378e1592b3..2646802fd78f4cb20633c79beb45ae7904184761 100644 --- a/src/plugins/projectexplorer/linuxiccparser.h +++ b/src/plugins/projectexplorer/linuxiccparser.h @@ -42,7 +42,9 @@ class LinuxIccParser : public ProjectExplorer::IOutputParser public: LinuxIccParser(); - virtual void stdError(const QString &line); + ~LinuxIccParser(); + + void stdError(const QString &line); private: QRegExp m_firstLine;