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