C++: Completion for templates as base classes

This fixes a variety of issues regarding class completion
when templates are used as base classes. The test cases
show examples.

Task-number: QTCREATORBUG-4357
Change-Id: I764d5ce817a78e1b19336e5beab758ca9e10f34b
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
This commit is contained in:
Leandro Melo
2012-08-15 12:50:01 +02:00
parent 7747c3c663
commit 11f6ae4a14
4 changed files with 295 additions and 14 deletions

View File

@@ -90,7 +90,7 @@ private:
ClassOrNamespace *lookupType_helper(const Name *name, QSet<ClassOrNamespace *> *processed,
bool searchInEnclosingScope, ClassOrNamespace *origin);
ClassOrNamespace *nestedType(const Name *name, ClassOrNamespace *origin) const;
ClassOrNamespace *nestedType(const Name *name, ClassOrNamespace *origin);
private:
struct CompareName: std::binary_function<const Name *, const Name *, bool> {
@@ -106,6 +106,7 @@ private:
Table _classOrNamespaces;
QList<Enum *> _enums;
QList<Symbol *> _todo;
QSharedPointer<Control> _control;
// it's an instantiation.
const TemplateNameId *_templateId;