forked from qt-creator/qt-creator
Expand the template parameters.
This commit is contained in:
@@ -447,6 +447,9 @@ void LookupContext::expandClass(Class *klass,
|
||||
const QList<Scope *> &visibleScopes,
|
||||
QList<Scope *> *expandedScopes) const
|
||||
{
|
||||
for (TemplateParameters *params = klass->templateParameters(); params; params = params->previous())
|
||||
expand(params->scope(), visibleScopes, expandedScopes);
|
||||
|
||||
for (unsigned i = 0; i < klass->memberCount(); ++i) {
|
||||
Symbol *symbol = klass->memberAt(i);
|
||||
if (Class *nestedClass = symbol->asClass()) {
|
||||
@@ -510,6 +513,9 @@ void LookupContext::expandFunction(Function *function,
|
||||
const QList<Scope *> &visibleScopes,
|
||||
QList<Scope *> *expandedScopes) const
|
||||
{
|
||||
for (TemplateParameters *params = function->templateParameters(); params; params = params->previous())
|
||||
expand(params->scope(), visibleScopes, expandedScopes);
|
||||
|
||||
if (! expandedScopes->contains(function->arguments()))
|
||||
expandedScopes->append(function->arguments());
|
||||
|
||||
|
@@ -637,11 +637,15 @@ ResolveExpression::resolveBaseExpression(const QList<LookupItem> &baseResults, i
|
||||
|
||||
if (NamedType *namedTy = ty->asNamedType()) {
|
||||
const QList<Scope *> visibleScopes = _context.visibleScopes(result);
|
||||
const QList<Symbol *> typedefCandidates = _context.resolve(namedTy->name(), visibleScopes);
|
||||
foreach (Symbol *typedefCandidate, typedefCandidates) {
|
||||
if (typedefCandidate->isTypedef() && typedefCandidate->type()->isNamedType()) {
|
||||
ty = typedefCandidate->type();
|
||||
lastVisibleSymbol = typedefCandidate;
|
||||
const QList<Symbol *> candidates = _context.resolve(namedTy->name(), visibleScopes);
|
||||
foreach (Symbol *candidate, candidates) {
|
||||
if (candidate->isTypedef() && candidate->type()->isNamedType()) {
|
||||
ty = candidate->type();
|
||||
lastVisibleSymbol = candidate;
|
||||
break;
|
||||
} else if (TypenameArgument *arg = candidate->asTypenameArgument()) {
|
||||
ty = arg->type();
|
||||
lastVisibleSymbol = candidate;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user