summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2015-05-22 15:13:18 +0200
committerFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2015-05-22 15:26:36 +0000
commit8f39e05e40fa1d7fe3ca45942f39c9848f10015b (patch)
treeb64413298cc18410814bdef729fd069109ca2a37
parent66f603628b62b6865ebd039b729713c0a64ae851 (diff)
downloadqt-creator-8f39e05e40fa1d7fe3ca45942f39c9848f10015b.tar.gz
Adapt MSVC output parser to MSVC 2015.
The space character after the line number was removed from the compiler messages. Change-Id: Ia249a6d4416744c67aada2eb2c5c26cf87bd7ef7 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
-rw-r--r--src/plugins/projectexplorer/msvcparser.cpp13
-rw-r--r--src/plugins/projectexplorer/outputparser_test.cpp13
2 files changed, 23 insertions, 3 deletions
diff --git a/src/plugins/projectexplorer/msvcparser.cpp b/src/plugins/projectexplorer/msvcparser.cpp
index a472827ed5..f088ce86af 100644
--- a/src/plugins/projectexplorer/msvcparser.cpp
+++ b/src/plugins/projectexplorer/msvcparser.cpp
@@ -34,7 +34,8 @@
#include <utils/qtcassert.h>
#include <utils/fileutils.h>
-static const char FILE_POS_PATTERN[] = "(cl|LINK|.+) : ";
+// As of MSVC 2015: "foo.cpp(42) :" -> "foo.cpp(42):"
+static const char FILE_POS_PATTERN[] = "(cl|LINK|.+[^ ]) ?: ";
static const char ERROR_PATTERN[] = "[A-Z]+\\d\\d\\d\\d ?:";
static QPair<Utils::FileName, int> parseFileName(const QString &input)
@@ -225,6 +226,16 @@ void ProjectExplorerPlugin::testMsvcOutputParsers_data()
Constants::TASK_CATEGORY_COMPILE))
<< QString();
+ QTest::newRow("labeled error-2015")
+ << QString::fromLatin1("qmlstandalone\\main.cpp(54): error C4716: 'findUnresolvedModule' : must return a value") << OutputParserTester::STDOUT
+ << QString() << QString()
+ << (QList<Task>()
+ << Task(Task::Error,
+ QLatin1String("C4716: 'findUnresolvedModule' : must return a value"),
+ Utils::FileName::fromUserInput(QLatin1String("qmlstandalone\\main.cpp")), 54,
+ Constants::TASK_CATEGORY_COMPILE))
+ << QString();
+
QTest::newRow("labeled warning")
<< QString::fromLatin1("x:\\src\\plugins\\projectexplorer\\msvcparser.cpp(69) : warning C4100: 'something' : unreferenced formal parameter") << OutputParserTester::STDOUT
<< QString() << QString()
diff --git a/src/plugins/projectexplorer/outputparser_test.cpp b/src/plugins/projectexplorer/outputparser_test.cpp
index bd5112f71a..f29e95f4e4 100644
--- a/src/plugins/projectexplorer/outputparser_test.cpp
+++ b/src/plugins/projectexplorer/outputparser_test.cpp
@@ -37,6 +37,13 @@
namespace ProjectExplorer {
+static inline QByteArray msgFileComparisonFail(const Utils::FileName &f1, const Utils::FileName &f2)
+{
+ const QString result = QLatin1Char('"') + f1.toUserOutput()
+ + QLatin1String("\" != \"") + f2.toUserOutput() + QLatin1Char('"');
+ return result.toLocal8Bit();
+}
+
OutputParserTester::OutputParserTester() :
m_debug(false)
{ }
@@ -83,7 +90,8 @@ void OutputParserTester::testParsing(const QString &lines,
for (int i = 0; i < tasks.size(); ++i) {
QCOMPARE(m_receivedTasks.at(i).category, tasks.at(i).category);
QCOMPARE(m_receivedTasks.at(i).description, tasks.at(i).description);
- QCOMPARE(m_receivedTasks.at(i).file, tasks.at(i).file);
+ QVERIFY2(m_receivedTasks.at(i).file == tasks.at(i).file,
+ msgFileComparisonFail(m_receivedTasks.at(i).file, tasks.at(i).file));
QCOMPARE(m_receivedTasks.at(i).line, tasks.at(i).line);
QCOMPARE(static_cast<int>(m_receivedTasks.at(i).type), static_cast<int>(tasks.at(i).type));
}
@@ -103,7 +111,8 @@ void OutputParserTester::testTaskMangling(const Task &input,
if (m_receivedTasks.size() == 1) {
QCOMPARE(m_receivedTasks.at(0).category, output.category);
QCOMPARE(m_receivedTasks.at(0).description, output.description);
- QCOMPARE(m_receivedTasks.at(0).file, output.file);
+ QVERIFY2(m_receivedTasks.at(0).file == output.file,
+ msgFileComparisonFail(m_receivedTasks.at(0).file, output.file));
QCOMPARE(m_receivedTasks.at(0).line, output.line);
QCOMPARE(m_receivedTasks.at(0).type, output.type);
}