Symbol *Scope::lookat(Identifier *id) const { if (! _hash || ! id) return 0; const unsigned h = id->hashCode() % _hashSize; Symbol *symbol = _hash[h]; for (; symbol; symbol = symbol->_next) { Name *identity = symbol->identity(); if (! identity) { continue; } else if (NameId *nameId = identity->asNameId()) { if (nameId->identifier()->isEqualTo(id)) break; } else if (TemplateNameId *t = identity->asTemplateNameId()) { if (t->identifier()->isEqualTo(id)) break; } else if (DestructorNameId *d = identity->asDestructorNameId()) { if (d->identifier()->isEqualTo(id)) break; } else if (identity->isQualifiedNameId()) { assert(0); } } return symbol; }