C++: Handle recursive auto declarations

Remember auto declarations we have already looked up and stop if we try
it again.

Task-number: QTCREATORBUG-9503

Change-Id: I989b11609c98bf197ce916d79c9d452294355053
Reviewed-by: Przemyslaw Gorszkowski <pgorszkowski@gmail.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
This commit is contained in:
Nikolai Kosjar
2013-06-11 09:22:18 +02:00
parent f1ed40a02c
commit 8f1b665667
6 changed files with 82 additions and 10 deletions

View File

@@ -43,7 +43,9 @@ namespace CPlusPlus {
class CPLUSPLUS_EXPORT ResolveExpression: protected ASTVisitor
{
public:
ResolveExpression(const LookupContext &context);
ResolveExpression(const LookupContext &context,
const QSet<const Declaration *> &autoDeclarationsBeingResolved
= QSet<const Declaration *>());
virtual ~ResolveExpression();
QList<LookupItem> operator()(ExpressionAST *ast, Scope *scope);
@@ -126,6 +128,7 @@ private:
const LookupContext& _context;
Bind bind;
QList<LookupItem> _results;
QSet<const Declaration *> _autoDeclarationsBeingResolved;
bool _reference;
};