summaryrefslogtreecommitdiff
path: root/src/plugins/projectexplorer/msvcparser.cpp
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2017-04-02 17:12:44 +0300
committerOrgad Shaneh <orgads@gmail.com>2017-04-03 11:56:05 +0000
commit6ffabeec07aa176a0e5523331d94af972cc1269b (patch)
treefeeb88ed92eba835667582e852bf9b488c41bf95 /src/plugins/projectexplorer/msvcparser.cpp
parent7fce93d7a7d53199a38763fa752d2aeb8fd3cd63 (diff)
downloadqt-creator-6ffabeec07aa176a0e5523331d94af972cc1269b.tar.gz
MSVCParser: Support "note" lines
main.cpp(7): error C2733: 'func': second C linkage of overloaded function not allowed main.cpp(6): note: see declaration of 'func' Change-Id: I46bbc86add628e7eadd5930ddf2fe9518b9e7adf Reviewed-by: André Hartmann <aha_1980@gmx.de> Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'src/plugins/projectexplorer/msvcparser.cpp')
-rw-r--r--src/plugins/projectexplorer/msvcparser.cpp27
1 files changed, 21 insertions, 6 deletions
diff --git a/src/plugins/projectexplorer/msvcparser.cpp b/src/plugins/projectexplorer/msvcparser.cpp
index 929d265448..74eb294096 100644
--- a/src/plugins/projectexplorer/msvcparser.cpp
+++ b/src/plugins/projectexplorer/msvcparser.cpp
@@ -32,7 +32,6 @@
// As of MSVC 2015: "foo.cpp(42) :" -> "foo.cpp(42):"
static const char FILE_POS_PATTERN[] = "^(?:\\d+>)?(cl|LINK|.+[^ ]) ?: ";
-static const char ERROR_PATTERN[] = "[A-Z]+\\d\\d\\d\\d ?:";
static QPair<Utils::FileName, int> parseFileName(const QString &input)
{
@@ -97,9 +96,9 @@ static Task::TaskType taskType(const QString &category)
MsvcParser::MsvcParser()
{
setObjectName(QLatin1String("MsvcParser"));
- m_compileRegExp.setPattern(QLatin1String(FILE_POS_PATTERN)
- + QLatin1String("(Command line |fatal )?(warning|error) (")
- + QLatin1String(ERROR_PATTERN) + QLatin1String(".*)$"));
+ m_compileRegExp.setPattern(QString(FILE_POS_PATTERN)
+ + "(?:Command line |fatal )?(?:(warning|error) "
+ "([A-Z]+\\d{4} ?: )|note: )(.*)$");
QTC_CHECK(m_compileRegExp.isValid());
m_additionalInfoRegExp.setPattern(QString::fromLatin1("^ (?:(could be |or )\\s*')?(.*)\\((\\d+)\\) : (.*)$"));
QTC_CHECK(m_additionalInfoRegExp.isValid());
@@ -175,8 +174,8 @@ bool MsvcParser::processCompileLine(const QString &line)
QRegularExpressionMatch match = m_compileRegExp.match(line);
if (match.hasMatch()) {
QPair<Utils::FileName, int> position = parseFileName(match.captured(1));
- m_lastTask = Task(taskType(match.captured(3)),
- match.captured(4).trimmed() /* description */,
+ m_lastTask = Task(taskType(match.captured(2)),
+ match.captured(3) + match.captured(4).trimmed(), // description
position.first, position.second,
Constants::TASK_CATEGORY_COMPILE);
m_lines = 1;
@@ -547,6 +546,22 @@ void ProjectExplorerPlugin::testMsvcOutputParsers_data()
<< QString() << QString::fromLatin1("/home/qtwebkithelpviewer.h:0: Note: No relevant classes found. No output generated.\n")
<< (QList<ProjectExplorer::Task>())
<< QString();
+
+ QTest::newRow("error with note")
+ << "main.cpp(7): error C2733: 'func': second C linkage of overloaded function not allowed\n"
+ "main.cpp(6): note: see declaration of 'func'"
+ << OutputParserTester::STDOUT
+ << QString() << QString()
+ << (QList<Task>()
+ << Task(Task::Error,
+ "C2733: 'func': second C linkage of overloaded function not allowed",
+ Utils::FileName::fromUserInput("main.cpp"), 7,
+ Constants::TASK_CATEGORY_COMPILE)
+ << Task(Task::Unknown,
+ "see declaration of 'func'",
+ Utils::FileName::fromUserInput("main.cpp"), 6,
+ Constants::TASK_CATEGORY_COMPILE))
+ << QString();
}
void ProjectExplorerPlugin::testMsvcOutputParsers()