CPlusPlus: Avoid reversing results for call lookup

Task-number: QTCREATORBUG-5876

Change-Id: Ia94f4aa67af2b79862acd7869a3952f6a44932cb
Reviewed-by: hjk <qthjk@ovi.com>
This commit is contained in:
Orgad Shaneh
2012-09-22 20:44:52 +03:00
committed by hjk
parent 422eee2938
commit 9ef97873d8

View File

@@ -49,6 +49,7 @@
#include <QList>
#include <QDebug>
#include <QSet>
#include <map>
using namespace CPlusPlus;
@@ -630,7 +631,8 @@ bool ResolveExpression::visit(CallAST *ast)
}
if (_reference) {
_results.clear();
typedef std::multimap<int, LookupItem> LookupMap;
LookupMap sortedResults;
foreach (const LookupItem &base, baseResults) {
if (Function *funTy = base.type()->asFunctionType()) {
if (! maybeValidPrototype(funTy, actualArgumentCount))
@@ -655,13 +657,13 @@ bool ResolveExpression::visit(CallAST *ast)
++score;
}
if (score)
_results.prepend(base);
else
_results.append(base);
sortedResults.insert(LookupMap::value_type(-score, base));
}
}
_results.clear();
for (LookupMap::const_iterator it = sortedResults.begin(); it != sortedResults.end(); ++it)
_results.append(it->second);
if (_results.isEmpty())
_results = baseResults;