From 572b04a00aa184b1ec174888c9f882002440a42d Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Wed, 4 Jan 2017 15:47:46 +0100 Subject: [PATCH] AutoTest: Find data tags of inherited functions Task-number: QTCREATORBUG-17522 Change-Id: I9fa1db3c2d7f338afe343fc835b9e3dbae353131 Reviewed-by: David Schulz --- src/plugins/autotest/qtest/qttestparser.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/plugins/autotest/qtest/qttestparser.cpp b/src/plugins/autotest/qtest/qttestparser.cpp index 743b7b2e4fa..d42945529e3 100644 --- a/src/plugins/autotest/qtest/qttestparser.cpp +++ b/src/plugins/autotest/qtest/qttestparser.cpp @@ -195,6 +195,23 @@ static QMap baseClassTestFunctions(const QSe return testFunctions; } +static QtTestCodeLocationList tagLocationsFor(const QtTestParseResult *func, + const QMap &dataTags) +{ + if (!func->inherited()) + return dataTags.value(func->name); + + QMap::ConstIterator it = dataTags.begin(); + QMap::ConstIterator end = dataTags.end(); + const int lastColon = func->name.lastIndexOf(':'); + QString funcName = lastColon == -1 ? func->name : func->name.mid(lastColon - 1); + for ( ; it != end; ++it) { + if (it.key().endsWith(funcName)) + return it.value(); + } + return QtTestCodeLocationList(); +} + static bool handleQtTest(QFutureInterface futureInterface, CPlusPlus::Document::Ptr document, const CPlusPlus::Snapshot &snapshot, @@ -255,7 +272,8 @@ static bool handleQtTest(QFutureInterface futureInterface, func->column = location.m_column; func->setInherited(location.m_inherited); - foreach (const QtTestCodeLocationAndType &tag, dataTags.value(func->name)) { + const QtTestCodeLocationList &tagLocations = tagLocationsFor(func, dataTags); + foreach (const QtTestCodeLocationAndType &tag, tagLocations) { QtTestParseResult *dataTag = new QtTestParseResult(id); dataTag->itemType = tag.m_type; dataTag->name = tag.m_name;