Initial work on the `new' GenTemplateInstance.

This commit is contained in:
Roberto Raggi
2009-10-26 17:54:32 +01:00
parent b4744214c6
commit 82ecb2c7b3
6 changed files with 359 additions and 165 deletions

View File

@@ -695,7 +695,7 @@ ResolveExpression::resolveMember(Name *memberName, Class *klass,
QList<Scope *> scopes;
_context.expand(klass->members(), _context.visibleScopes(), &scopes);
QList<Symbol *> candidates = _context.resolve(memberName, scopes);
const QList<Symbol *> candidates = _context.resolve(memberName, scopes);
foreach (Symbol *candidate, candidates) {
FullySpecifiedType ty = candidate->type();
@@ -710,13 +710,17 @@ ResolveExpression::resolveMember(Name *memberName, Class *klass,
for (unsigned i = 0; i < templId->templateArgumentCount(); ++i) {
FullySpecifiedType templArgTy = templId->templateArgumentAt(i);
if (i < klass->templateParameterCount())
subst.append(qMakePair(klass->templateParameterAt(i)->name(),
templArgTy));
if (i < klass->templateParameterCount()) {
Name *templArgName = klass->templateParameterAt(i)->name();
if (templArgName && templArgName->identifier()) {
Identifier *templArgId = templArgName->identifier();
subst.append(qMakePair(templArgId, templArgTy));
}
}
}
GenTemplateInstance inst(control(), subst);
ty = inst(ty);
GenTemplateInstance inst(_context, subst);
ty = inst(candidate);
}
results.append(Result(ty, candidate));