From 4da21c612eddda05fe8e89f9e03c019097b7af5a Mon Sep 17 00:00:00 2001 From: Tobias Hunger <tobias.hunger@nokia.com> Date: Thu, 26 Aug 2010 15:31:14 +0200 Subject: [PATCH] Make ASSERT information clickable * Make information raised by Qt assert clickable. Task-number: QTCREATORBUG-2175 Reviewed-by: Olivier Goffart --- .../qt4projectmanager/qtoutputformatter.cpp | 25 +++++++++++++++---- .../qt4projectmanager/qtoutputformatter.h | 1 + 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/plugins/qt4projectmanager/qtoutputformatter.cpp b/src/plugins/qt4projectmanager/qtoutputformatter.cpp index ae2ecb1fabd..859f652bb3b 100644 --- a/src/plugins/qt4projectmanager/qtoutputformatter.cpp +++ b/src/plugins/qt4projectmanager/qtoutputformatter.cpp @@ -43,10 +43,9 @@ QtOutputFormatter::QtOutputFormatter(Qt4Project *project) : OutputFormatter() , m_qmlError(QLatin1String("(file:///.+:\\d+:\\d+):")) , m_qtError(QLatin1String("Object::.*in (.*:\\d+)")) + , m_qtAssert(QLatin1String("^ASSERT: .* in file (.+, line \\d+)$")) , m_project(project) - { - } LinkResult QtOutputFormatter::matchLine(const QString &line) const @@ -62,6 +61,10 @@ LinkResult QtOutputFormatter::matchLine(const QString &line) const lr.href = m_qtError.cap(1); lr.start = m_qtError.pos(1); lr.end = lr.start + lr.href.length(); + } else if (m_qtAssert.indexIn(line) != -1) { + lr.href = m_qtAssert.cap(1); + lr.start = m_qtAssert.pos(1); + lr.end = lr.start + lr.href.length(); } return lr; } @@ -160,10 +163,22 @@ void QtOutputFormatter::handleLink(const QString &href) return; } + QString fileName; + int line = -1; + QRegExp qtErrorLink(QLatin1String("^(.*):(\\d+)$")); - if (qtErrorLink.indexIn(href) != 1) { - QString fileName = qtErrorLink.cap(1); - const int line = qtErrorLink.cap(2).toInt(); + if (qtErrorLink.indexIn(href) != -1) { + fileName = qtErrorLink.cap(1); + line = qtErrorLink.cap(2).toInt(); + } + + QRegExp qtAssertLink(QLatin1String("^(.+), line (\\d+)$")); + if (qtAssertLink.indexIn(href) != -1) { + fileName = qtAssertLink.cap(1); + line = qtAssertLink.cap(2).toInt(); + } + + if (!fileName.isEmpty()) { QFileInfo fi(fileName); if (fi.isRelative()) { // Yeah fileName is relative, no suprise diff --git a/src/plugins/qt4projectmanager/qtoutputformatter.h b/src/plugins/qt4projectmanager/qtoutputformatter.h index 23b386d86f1..9b90a0d37d7 100644 --- a/src/plugins/qt4projectmanager/qtoutputformatter.h +++ b/src/plugins/qt4projectmanager/qtoutputformatter.h @@ -61,6 +61,7 @@ private: QRegExp m_qmlError; QRegExp m_qtError; + QRegExp m_qtAssert; QWeakPointer<Qt4Project> m_project; QTextCharFormat m_linkFormat; QString m_lastLine; -- GitLab