From 7af0ea38cef9c907f4e5943eba1cacf359bc323d Mon Sep 17 00:00:00 2001 From: Tobias Hunger <tobias.hunger@nokia.com> Date: Thu, 25 Nov 2010 11:13:17 +0100 Subject: [PATCH] qmake: Improve parser Improve qmake parser to handle yet another way it marks up warnings. Add unit test for this case. --- src/plugins/qt4projectmanager/qmakeparser.cpp | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/plugins/qt4projectmanager/qmakeparser.cpp b/src/plugins/qt4projectmanager/qmakeparser.cpp index ec1d334e2e4..45ac265c69b 100644 --- a/src/plugins/qt4projectmanager/qmakeparser.cpp +++ b/src/plugins/qt4projectmanager/qmakeparser.cpp @@ -69,9 +69,17 @@ void QMakeParser::stdError(const QString &line) return; } if (m_error.indexIn(lne) > -1) { - emit addTask(Task(Task::Error, + QString fileName = QDir::fromNativeSeparators(m_error.cap(1)); + Task::TaskType type = Task::Error; + if (fileName.startsWith("WARNING: ")) { + type = Task::Warning; + fileName = fileName.mid(9); + } else if (fileName.startsWith("ERROR: ")) { + fileName = fileName.mid(7); + } + emit addTask(Task(type, m_error.cap(3) /* description */, - QDir::fromNativeSeparators(m_error.cap(1)) /* file */, + fileName, m_error.cap(2).toInt() /* line */, ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM)); return; @@ -146,6 +154,17 @@ void Qt4ProjectManagerPlugin::testQmakeOutputParsers_data() QString(), -1, ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM)) << QString(); + + QTest::newRow("qMake warning with location") + << QString::fromLatin1("WARNING: e:\\NokiaQtSDK\\Simulator\\Qt\\msvc2008\\lib\\qtmaind.prl:1: Unescaped backslashes are deprecated.") + << OutputParserTester::STDERR + << QString() << QString() + << (QList<ProjectExplorer::Task>() + << Task(Task::Warning, + QLatin1String("Unescaped backslashes are deprecated."), + QLatin1String("e:/NokiaQtSDK/Simulator/Qt/msvc2008/lib/qtmaind.prl"), 1, + ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM)) + << QString(); } void Qt4ProjectManagerPlugin::testQmakeOutputParsers() -- GitLab