Use const names.

This commit is contained in:
Roberto Raggi
2009-12-01 12:46:15 +01:00
parent f2e77fb8fd
commit 7c7ce13ac0
46 changed files with 577 additions and 642 deletions

View File

@@ -122,7 +122,7 @@ bool CheckUndefinedSymbols::isType(const Identifier *id) const
return isType(QByteArray::fromRawData(id->chars(), id->size()));
}
void CheckUndefinedSymbols::addType(Name *name)
void CheckUndefinedSymbols::addType(const Name *name)
{
if (! name)
return;
@@ -131,7 +131,7 @@ void CheckUndefinedSymbols::addType(Name *name)
_types.insert(QByteArray(id->chars(), id->size()));
}
void CheckUndefinedSymbols::addProtocol(Name *name)
void CheckUndefinedSymbols::addProtocol(const Name *name)
{
if (!name)
return;
@@ -294,7 +294,7 @@ bool CheckUndefinedSymbols::visit(ClassSpecifierAST *ast)
Symbol *symbol = klass->memberAt(i);
if (symbol->name() && symbol->name()->isNameId()) {
NameId *nameId = symbol->name()->asNameId();
const NameId *nameId = symbol->name()->asNameId();
if (! qstrcmp(nameId->identifier()->chars(), "qt_check_for_QOBJECT_macro")) {
hasQ_OBJECT_CHECK = true;
@@ -367,7 +367,7 @@ bool CheckUndefinedSymbols::visit(BaseSpecifierAST *base)
if (NameAST *nameAST = base->name) {
bool resolvedBaseClassName = false;
if (Name *name = nameAST->name) {
if (const Name *name = nameAST->name) {
const Identifier *id = name->identifier();
const QByteArray spell = QByteArray::fromRawData(id->chars(), id->size());
if (isType(spell))
@@ -403,9 +403,9 @@ bool CheckUndefinedSymbols::visit(UsingDirectiveAST *ast)
bool CheckUndefinedSymbols::visit(QualifiedNameAST *ast)
{
if (ast->name) {
QualifiedNameId *q = ast->name->asQualifiedNameId();
const QualifiedNameId *q = ast->name->asQualifiedNameId();
for (unsigned i = 0; i < q->nameCount() - 1; ++i) {
Name *name = q->nameAt(i);
const Name *name = q->nameAt(i);
if (const Identifier *id = name->identifier()) {
const QByteArray spell = QByteArray::fromRawData(id->chars(), id->size());
if (! (_namespaceNames.contains(spell) || isType(id))) {
@@ -474,7 +474,7 @@ bool CheckUndefinedSymbols::visit(ObjCClassDeclarationAST *ast)
if (NameAST *nameAST = ast->superclass) {
bool resolvedSuperClassName = false;
if (Name *name = nameAST->name) {
if (const Name *name = nameAST->name) {
const Identifier *id = name->identifier();
const QByteArray spell = QByteArray::fromRawData(id->chars(), id->size());
if (isType(spell))
@@ -496,7 +496,7 @@ bool CheckUndefinedSymbols::visit(ObjCProtocolRefsAST *ast)
if (NameAST *nameAST = iter->value) {
bool resolvedProtocolName = false;
if (Name *name = nameAST->name) {
if (const Name *name = nameAST->name) {
const Identifier *id = name->identifier();
const QByteArray spell = QByteArray::fromRawData(id->chars(), id->size());
if (isProtocol(spell))

View File

@@ -55,11 +55,11 @@ protected:
bool isType(const Identifier *id) const;
bool isType(const QByteArray &name) const;
void addType(Name *name);
void addType(const Name *name);
void buildTypeMap(Class *klass);
void buildMemberTypeMap(Symbol *member);
void buildTypeMap(NamespaceBinding *binding, QSet<NamespaceBinding *> *processed);
void addProtocol(Name *name);
void addProtocol(const Name *name);
bool isProtocol(const QByteArray &name) const;
FunctionDeclaratorAST *currentFunctionDeclarator() const;

View File

@@ -79,11 +79,11 @@ NamespaceBinding::~NamespaceBinding()
qDeleteAll(classBindings);
}
NameId *NamespaceBinding::name() const
const NameId *NamespaceBinding::name() const
{
if (symbols.size()) {
if (Name *name = symbols.first()->name()) {
NameId *nameId = name->asNameId();
if (const Name *name = symbols.first()->name()) {
const NameId *nameId = name->asNameId();
Q_ASSERT(nameId != 0);
return nameId;
@@ -95,7 +95,7 @@ NameId *NamespaceBinding::name() const
const Identifier *NamespaceBinding::identifier() const
{
if (NameId *nameId = name())
if (const NameId *nameId = name())
return nameId->identifier();
return 0;
@@ -144,7 +144,7 @@ Binding *NamespaceBinding::findClassOrNamespaceBinding(const Identifier *id, QSe
return 0;
}
ClassBinding *NamespaceBinding::findClassBinding(Name *name, QSet<Binding *> *processed)
ClassBinding *NamespaceBinding::findClassBinding(const Name *name, QSet<Binding *> *processed)
{
if (! name)
return 0;
@@ -191,19 +191,19 @@ ClassBinding *NamespaceBinding::findClassBinding(Name *name, QSet<Binding *> *pr
return 0;
}
NamespaceBinding *NamespaceBinding::findNamespaceBinding(Name *name)
NamespaceBinding *NamespaceBinding::findNamespaceBinding(const Name *name)
{
if (! name)
return anonymousNamespaceBinding;
else if (NameId *nameId = name->asNameId())
else if (const NameId *nameId = name->asNameId())
return findNamespaceBindingForNameId(nameId, /*lookAtParent = */ true);
else if (const QualifiedNameId *q = name->asQualifiedNameId()) {
NamespaceBinding *current = this;
for (unsigned i = 0; i < q->nameCount(); ++i) {
NameId *namespaceName = q->nameAt(i)->asNameId();
const NameId *namespaceName = q->nameAt(i)->asNameId();
if (! namespaceName)
return 0;
@@ -225,14 +225,14 @@ NamespaceBinding *NamespaceBinding::findNamespaceBinding(Name *name)
return 0;
}
NamespaceBinding *NamespaceBinding::findNamespaceBindingForNameId(NameId *name,
NamespaceBinding *NamespaceBinding::findNamespaceBindingForNameId(const NameId *name,
bool lookAtParentNamespace)
{
QSet<NamespaceBinding *> processed;
return findNamespaceBindingForNameId_helper(name, lookAtParentNamespace, &processed);
}
NamespaceBinding *NamespaceBinding::findNamespaceBindingForNameId_helper(NameId *name,
NamespaceBinding *NamespaceBinding::findNamespaceBindingForNameId_helper(const NameId *name,
bool lookAtParentNamespace,
QSet<NamespaceBinding *> *processed)
{
@@ -242,12 +242,12 @@ NamespaceBinding *NamespaceBinding::findNamespaceBindingForNameId_helper(NameId
processed->insert(this);
foreach (NamespaceBinding *binding, children) {
Name *bindingName = binding->name();
const Name *bindingName = binding->name();
if (! bindingName)
continue;
if (NameId *bindingNameId = bindingName->asNameId()) {
if (const NameId *bindingNameId = bindingName->asNameId()) {
if (name->isEqualTo(bindingNameId))
return binding;
}
@@ -296,7 +296,7 @@ NamespaceBinding *NamespaceBinding::findOrCreateNamespaceBinding(Namespace *symb
}
static void closure(const Location &loc,
NamespaceBinding *binding, Name *name,
NamespaceBinding *binding, const Name *name,
QList<NamespaceBinding *> *bindings)
{
if (bindings->contains(binding))
@@ -334,13 +334,13 @@ static void closure(const Location &loc,
NamespaceBinding *NamespaceBinding::resolveNamespace(const Location &loc,
Name *name,
const Name *name,
bool lookAtParent)
{
if (! name)
return 0;
else if (NameId *nameId = name->asNameId()) {
else if (const NameId *nameId = name->asNameId()) {
QList<NamespaceBinding *> bindings;
closure(loc, this, nameId, &bindings);
@@ -447,7 +447,7 @@ Binding *ClassBinding::findClassOrNamespaceBinding(const Identifier *id, QSet<Bi
return 0;
}
ClassBinding *ClassBinding::findClassBinding(Name *name, QSet<Binding *> *processed)
ClassBinding *ClassBinding::findClassBinding(const Name *name, QSet<Binding *> *processed)
{
if (! name)
return 0;
@@ -549,7 +549,7 @@ ClassBinding::ClassBinding(ClassBinding *parentClass)
ClassBinding::~ClassBinding()
{ qDeleteAll(children); }
Name *ClassBinding::name() const
const Name *ClassBinding::name() const
{
if (symbols.isEmpty())
return 0;
@@ -559,7 +559,7 @@ Name *ClassBinding::name() const
const Identifier *ClassBinding::identifier() const
{
if (Name *n = name())
if (const Name *n = name())
return n->identifier();
return 0;
@@ -623,12 +623,12 @@ protected:
NamespaceBinding *bind(Symbol *symbol, NamespaceBinding *binding);
NamespaceBinding *findOrCreateNamespaceBinding(Namespace *symbol);
NamespaceBinding *resolveNamespace(const Location &loc, Name *name);
NamespaceBinding *resolveNamespace(const Location &loc, const Name *name);
NamespaceBinding *switchNamespaceBinding(NamespaceBinding *binding);
ClassBinding *findOrCreateClassBinding(Class *classSymbol);
ClassBinding *findClassBinding(Name *name);
ClassBinding *findClassBinding(const Name *name);
ClassBinding *switchClassBinding(ClassBinding *binding);
@@ -665,7 +665,7 @@ NamespaceBinding *Binder::bind(Symbol *symbol, NamespaceBinding *binding)
NamespaceBinding *Binder::findOrCreateNamespaceBinding(Namespace *symbol)
{ return namespaceBinding->findOrCreateNamespaceBinding(symbol); }
NamespaceBinding *Binder::resolveNamespace(const Location &loc, Name *name)
NamespaceBinding *Binder::resolveNamespace(const Location &loc, const Name *name)
{
if (! namespaceBinding)
return 0;
@@ -694,7 +694,7 @@ ClassBinding *Binder::findOrCreateClassBinding(Class *classSymbol)
return binding;
}
ClassBinding *Binder::findClassBinding(Name *name)
ClassBinding *Binder::findClassBinding(const Name *name)
{
QSet<Binding *> processed;

View File

@@ -84,7 +84,7 @@ public:
virtual NamespaceBinding *asNamespaceBinding() { return 0; }
virtual ClassBinding *asClassBinding() { return 0; }
virtual ClassBinding *findClassBinding(Name *name, QSet<Binding *> *processed) = 0;
virtual ClassBinding *findClassBinding(const Name *name, QSet<Binding *> *processed) = 0;
virtual Binding *findClassOrNamespaceBinding(const Identifier *id, QSet<Binding *> *processed) = 0;
};
@@ -98,7 +98,7 @@ public:
virtual ~NamespaceBinding();
/// Returns this binding's name.
NameId *name() const;
const NameId *name() const;
/// Returns this binding's identifier.
const Identifier *identifier() const;
@@ -107,16 +107,16 @@ public:
NamespaceBinding *globalNamespaceBinding();
/// Returns the binding for the given namespace symbol.
NamespaceBinding *findNamespaceBinding(Name *name);
NamespaceBinding *findNamespaceBinding(const Name *name);
/// Returns the binding associated with the given symbol.
NamespaceBinding *findOrCreateNamespaceBinding(Namespace *symbol);
NamespaceBinding *resolveNamespace(const Location &loc,
Name *name,
const Name *name,
bool lookAtParent = true);
virtual ClassBinding *findClassBinding(Name *name, QSet<Binding *> *processed);
virtual ClassBinding *findClassBinding(const Name *name, QSet<Binding *> *processed);
virtual Binding *findClassOrNamespaceBinding(const Identifier *id, QSet<Binding *> *processed);
/// Helpers.
@@ -129,10 +129,10 @@ public:
static ClassBinding *find(Class *symbol, NamespaceBinding *binding);
private:
NamespaceBinding *findNamespaceBindingForNameId(NameId *name,
NamespaceBinding *findNamespaceBindingForNameId(const NameId *name,
bool lookAtParentNamespace);
NamespaceBinding *findNamespaceBindingForNameId_helper(NameId *name,
NamespaceBinding *findNamespaceBindingForNameId_helper(const NameId *name,
bool lookAtParentNamespace,
QSet<NamespaceBinding *> *processed);
@@ -165,13 +165,13 @@ public:
virtual ClassBinding *asClassBinding() { return this; }
/// Returns this binding's name.
Name *name() const;
const Name *name() const;
/// Returns this binding's identifier.
const Identifier *identifier() const;
virtual QByteArray qualifiedId() const;
virtual ClassBinding *findClassBinding(Name *name, QSet<Binding *> *processed);
virtual ClassBinding *findClassBinding(const Name *name, QSet<Binding *> *processed);
virtual Binding *findClassOrNamespaceBinding(const Identifier *id, QSet<Binding *> *processed);
void dump();

View File

@@ -52,7 +52,7 @@ public:
Control *control() const { return context.control(); }
FullySpecifiedType apply(Name *name);
FullySpecifiedType apply(const Name *name);
FullySpecifiedType apply(const FullySpecifiedType &type);
int findSubstitution(const Identifier *id) const;
@@ -207,7 +207,7 @@ private:
public:
ApplyToName(ApplySubstitution *q): q(q) {}
FullySpecifiedType operator()(Name *name)
FullySpecifiedType operator()(const Name *name)
{
FullySpecifiedType previousType = switchType(FullySpecifiedType());
accept(name);
@@ -231,7 +231,7 @@ private:
return previousType;
}
virtual void visit(NameId *name)
virtual void visit(const NameId *name)
{
int index = findSubstitution(name->identifier());
@@ -242,7 +242,7 @@ private:
_type = control()->namedType(name);
}
virtual void visit(TemplateNameId *name)
virtual void visit(const TemplateNameId *name)
{
QVarLengthArray<FullySpecifiedType, 8> arguments(name->templateArgumentCount());
for (unsigned i = 0; i < name->templateArgumentCount(); ++i) {
@@ -250,17 +250,19 @@ private:
arguments[i] = q->apply(argTy);
}
TemplateNameId *templId = control()->templateNameId(name->identifier(), arguments.data(), arguments.size());
const TemplateNameId *templId = control()->templateNameId(name->identifier(),
arguments.data(),
arguments.size());
_type = control()->namedType(templId);
}
virtual void visit(QualifiedNameId *name)
virtual void visit(const QualifiedNameId *name)
{
QVarLengthArray<Name *, 8> names(name->nameCount());
QVarLengthArray<const Name *, 8> names(name->nameCount());
for (unsigned i = 0; i < name->nameCount(); ++i) {
Name *n = name->nameAt(i);
const Name *n = name->nameAt(i);
if (TemplateNameId *templId = n->asTemplateNameId()) {
if (const TemplateNameId *templId = n->asTemplateNameId()) {
QVarLengthArray<FullySpecifiedType, 8> arguments(templId->templateArgumentCount());
for (unsigned templateArgIndex = 0; templateArgIndex < templId->templateArgumentCount(); ++templateArgIndex) {
FullySpecifiedType argTy = templId->templateArgumentAt(templateArgIndex);
@@ -273,29 +275,29 @@ private:
names[i] = n;
}
QualifiedNameId *q = control()->qualifiedNameId(names.data(), names.size(), name->isGlobal());
const QualifiedNameId *q = control()->qualifiedNameId(names.data(), names.size(), name->isGlobal());
_type = control()->namedType(q);
}
virtual void visit(DestructorNameId *name)
virtual void visit(const DestructorNameId *name)
{
Overview oo;
qWarning() << "ignored name:" << oo(name);
}
virtual void visit(OperatorNameId *name)
virtual void visit(const OperatorNameId *name)
{
Overview oo;
qWarning() << "ignored name:" << oo(name);
}
virtual void visit(ConversionNameId *name)
virtual void visit(const ConversionNameId *name)
{
Overview oo;
qWarning() << "ignored name:" << oo(name);
}
virtual void visit(SelectorNameId *name)
virtual void visit(const SelectorNameId *name)
{
Overview oo;
qWarning() << "ignored name:" << oo(name);
@@ -325,7 +327,7 @@ ApplySubstitution::~ApplySubstitution()
{
}
FullySpecifiedType ApplySubstitution::apply(Name *name)
FullySpecifiedType ApplySubstitution::apply(const Name *name)
{
FullySpecifiedType ty = applyToName(name);
return ty;

View File

@@ -109,14 +109,14 @@ bool LookupContext::maybeValidSymbol(Symbol *symbol,
return false;
}
QList<Scope *> LookupContext::resolveNestedNameSpecifier(QualifiedNameId *q,
const QList<Scope *> &visibleScopes) const
QList<Scope *> LookupContext::resolveNestedNameSpecifier(const QualifiedNameId *q,
const QList<Scope *> &visibleScopes) const
{
QList<Symbol *> candidates;
QList<Scope *> scopes = visibleScopes;
for (unsigned i = 0; i < q->nameCount() - 1; ++i) {
Name *name = q->nameAt(i);
const Name *name = q->nameAt(i);
candidates = resolveClassOrNamespace(name, scopes);
@@ -137,7 +137,7 @@ QList<Scope *> LookupContext::resolveNestedNameSpecifier(QualifiedNameId *q,
return scopes;
}
QList<Symbol *> LookupContext::resolveQualifiedNameId(QualifiedNameId *q,
QList<Symbol *> LookupContext::resolveQualifiedNameId(const QualifiedNameId *q,
const QList<Scope *> &visibleScopes,
ResolveMode mode) const
{
@@ -153,7 +153,7 @@ QList<Symbol *> LookupContext::resolveQualifiedNameId(QualifiedNameId *q,
else if (! symbol->isClass())
continue;
QualifiedNameId *qq = symbol->name()->asQualifiedNameId();
const QualifiedNameId *qq = symbol->name()->asQualifiedNameId();
if (! qq)
continue;
@@ -167,8 +167,8 @@ QList<Symbol *> LookupContext::resolveQualifiedNameId(QualifiedNameId *q,
unsigned j = 0;
for (; j < q->nameCount(); ++j) {
Name *classOrNamespaceName1 = q->nameAt(j);
Name *classOrNamespaceName2 = qq->nameAt(j);
const Name *classOrNamespaceName1 = q->nameAt(j);
const Name *classOrNamespaceName2 = qq->nameAt(j);
if (! classOrNamespaceName1->isEqualTo(classOrNamespaceName2))
break;
@@ -205,7 +205,7 @@ QList<Symbol *> LookupContext::resolveQualifiedNameId(QualifiedNameId *q,
return candidates;
}
QList<Symbol *> LookupContext::resolveOperatorNameId(OperatorNameId *opId,
QList<Symbol *> LookupContext::resolveOperatorNameId(const OperatorNameId *opId,
const QList<Scope *> &visibleScopes,
ResolveMode) const
{
@@ -226,7 +226,7 @@ QList<Symbol *> LookupContext::resolveOperatorNameId(OperatorNameId *opId,
return candidates;
}
QList<Symbol *> LookupContext::resolve(Name *name, const QList<Scope *> &visibleScopes,
QList<Symbol *> LookupContext::resolve(const Name *name, const QList<Scope *> &visibleScopes,
ResolveMode mode) const
{
QList<Symbol *> candidates;
@@ -234,10 +234,10 @@ QList<Symbol *> LookupContext::resolve(Name *name, const QList<Scope *> &visible
if (!name)
return candidates; // nothing to do, the symbol is anonymous.
else if (QualifiedNameId *q = name->asQualifiedNameId())
else if (const QualifiedNameId *q = name->asQualifiedNameId())
return resolveQualifiedNameId(q, visibleScopes, mode);
else if (OperatorNameId *opId = name->asOperatorNameId())
else if (const OperatorNameId *opId = name->asOperatorNameId())
return resolveOperatorNameId(opId, visibleScopes, mode);
else if (const Identifier *id = name->identifier()) {
@@ -256,14 +256,14 @@ QList<Symbol *> LookupContext::resolve(Name *name, const QList<Scope *> &visible
continue; // skip it, the symbol's id is not compatible with this lookup.
}
if (QualifiedNameId *q = symbol->name()->asQualifiedNameId()) {
if (const QualifiedNameId *q = symbol->name()->asQualifiedNameId()) {
if (name->isDestructorNameId() != q->unqualifiedNameId()->isDestructorNameId())
continue;
else if (q->nameCount() > 1) {
Name *classOrNamespaceName = control()->qualifiedNameId(q->names(),
q->nameCount() - 1);
const Name *classOrNamespaceName = control()->qualifiedNameId(q->names(),
q->nameCount() - 1);
if (const Identifier *classOrNamespaceNameId = identifier(classOrNamespaceName)) {
if (classOrNamespaceNameId->isEqualTo(id))
@@ -418,7 +418,7 @@ void LookupContext::expandNamespace(Namespace *ns,
if (Scope *encl = ns->enclosingNamespaceScope())
expand(encl, visibleScopes, expandedScopes);
if (Name *nsName = ns->name()) {
if (const Name *nsName = ns->name()) {
const QList<Symbol *> namespaceList = resolveNamespace(nsName, visibleScopes);
foreach (Symbol *otherNs, namespaceList) {
if (otherNs == ns)
@@ -478,7 +478,7 @@ void LookupContext::expandClass(Class *klass,
for (unsigned i = 0; i < klass->baseClassCount(); ++i) {
BaseClass *baseClass = klass->baseClassAt(i);
Name *baseClassName = baseClass->name();
const Name *baseClassName = baseClass->name();
const QList<Symbol *> baseClassCandidates = resolveClass(baseClassName,
classVisibleScopes);
@@ -515,8 +515,8 @@ void LookupContext::expandFunction(Function *function,
if (! expandedScopes->contains(function->arguments()))
expandedScopes->append(function->arguments());
if (QualifiedNameId *q = function->name()->asQualifiedNameId()) {
Name *nestedNameSpec = 0;
if (const QualifiedNameId *q = function->name()->asQualifiedNameId()) {
const Name *nestedNameSpec = 0;
if (q->nameCount() == 1)
nestedNameSpec = q->nameAt(0);
else
@@ -565,7 +565,7 @@ void LookupContext::expandObjCClass(ObjCClass *klass,
// expand the base class:
if (ObjCBaseClass *baseClass = klass->baseClass()) {
Name *baseClassName = baseClass->name();
const Name *baseClassName = baseClass->name();
const QList<Symbol *> baseClassCandidates = resolveObjCClass(baseClassName,
visibleScopes);
@@ -577,7 +577,7 @@ void LookupContext::expandObjCClass(ObjCClass *klass,
// expand the protocols:
for (unsigned i = 0; i < klass->protocolCount(); ++i) {
Name *protocolName = klass->protocolAt(i)->name();
const Name *protocolName = klass->protocolAt(i)->name();
const QList<Symbol *> protocolCandidates = resolveObjCProtocol(protocolName, visibleScopes);
for (int j = 0; j < protocolCandidates.size(); ++j) {
if (ObjCProtocol *protocolSymbol = protocolCandidates.at(j)->asObjCProtocol())

View File

@@ -94,22 +94,22 @@ public:
static Symbol *canonicalSymbol(const QList<LookupItem> &candidates,
NamespaceBinding *globalNamespaceBinding);
QList<Symbol *> resolve(Name *name) const
QList<Symbol *> resolve(const Name *name) const
{ return resolve(name, visibleScopes()); }
QList<Symbol *> resolveNamespace(Name *name) const
QList<Symbol *> resolveNamespace(const Name *name) const
{ return resolveNamespace(name, visibleScopes()); }
QList<Symbol *> resolveClass(Name *name) const
QList<Symbol *> resolveClass(const Name *name) const
{ return resolveClass(name, visibleScopes()); }
QList<Symbol *> resolveClassOrNamespace(Name *name) const
QList<Symbol *> resolveClassOrNamespace(const Name *name) const
{ return resolveClassOrNamespace(name, visibleScopes()); }
QList<Symbol *> resolveObjCClass(Name *name) const
QList<Symbol *> resolveObjCClass(const Name *name) const
{ return resolveObjCClass(name, visibleScopes()); }
QList<Symbol *> resolveObjCProtocol(Name *name) const
QList<Symbol *> resolveObjCProtocol(const Name *name) const
{ return resolveObjCProtocol(name, visibleScopes()); }
enum ResolveMode {
@@ -122,22 +122,22 @@ public:
ResolveAll = ResolveSymbol | ResolveClassOrNamespace | ResolveObjCClass | ResolveObjCProtocol
};
QList<Symbol *> resolve(Name *name, const QList<Scope *> &visibleScopes,
QList<Symbol *> resolve(const Name *name, const QList<Scope *> &visibleScopes,
ResolveMode mode = ResolveAll) const;
QList<Symbol *> resolveNamespace(Name *name, const QList<Scope *> &visibleScopes) const
QList<Symbol *> resolveNamespace(const Name *name, const QList<Scope *> &visibleScopes) const
{ return resolve(name, visibleScopes, ResolveNamespace); }
QList<Symbol *> resolveClass(Name *name, const QList<Scope *> &visibleScopes) const
QList<Symbol *> resolveClass(const Name *name, const QList<Scope *> &visibleScopes) const
{ return resolve(name, visibleScopes, ResolveClass); }
QList<Symbol *> resolveClassOrNamespace(Name *name, const QList<Scope *> &visibleScopes) const
QList<Symbol *> resolveClassOrNamespace(const Name *name, const QList<Scope *> &visibleScopes) const
{ return resolve(name, visibleScopes, ResolveClassOrNamespace); }
QList<Symbol *> resolveObjCClass(Name *name, const QList<Scope *> &visibleScopes) const
QList<Symbol *> resolveObjCClass(const Name *name, const QList<Scope *> &visibleScopes) const
{ return resolve(name, visibleScopes, ResolveObjCClass); }
QList<Symbol *> resolveObjCProtocol(Name *name, const QList<Scope *> &visibleScopes) const
QList<Symbol *> resolveObjCProtocol(const Name *name, const QList<Scope *> &visibleScopes) const
{ return resolve(name, visibleScopes, ResolveObjCProtocol); }
QList<Scope *> visibleScopes() const
@@ -187,15 +187,15 @@ public:
private:
static Symbol *canonicalSymbol(Symbol *symbol);
QList<Symbol *> resolveQualifiedNameId(QualifiedNameId *q,
QList<Symbol *> resolveQualifiedNameId(const QualifiedNameId *q,
const QList<Scope *> &visibleScopes,
ResolveMode mode) const;
QList<Symbol *> resolveOperatorNameId(OperatorNameId *opId,
QList<Symbol *> resolveOperatorNameId(const OperatorNameId *opId,
const QList<Scope *> &visibleScopes,
ResolveMode mode) const;
QList<Scope *> resolveNestedNameSpecifier(QualifiedNameId *q,
QList<Scope *> resolveNestedNameSpecifier(const QualifiedNameId *q,
const QList<Scope *> &visibleScopes) const;
const Identifier *identifier(const Name *name) const;

View File

@@ -48,7 +48,7 @@ const Overview *NamePrettyPrinter::overview() const
return _overview;
}
QString NamePrettyPrinter::operator()(Name *name)
QString NamePrettyPrinter::operator()(const Name *name)
{
QString previousName = switchName();
accept(name);
@@ -62,7 +62,7 @@ QString NamePrettyPrinter::switchName(const QString &name)
return previousName;
}
void NamePrettyPrinter::visit(NameId *name)
void NamePrettyPrinter::visit(const NameId *name)
{
const Identifier *id = name->identifier();
if (id)
@@ -71,7 +71,7 @@ void NamePrettyPrinter::visit(NameId *name)
_name = QLatin1String("anonymous");
}
void NamePrettyPrinter::visit(TemplateNameId *name)
void NamePrettyPrinter::visit(const TemplateNameId *name)
{
const Identifier *id = name->identifier();
if (id)
@@ -93,14 +93,14 @@ void NamePrettyPrinter::visit(TemplateNameId *name)
_name += QLatin1Char('>');
}
void NamePrettyPrinter::visit(DestructorNameId *name)
void NamePrettyPrinter::visit(const DestructorNameId *name)
{
const Identifier *id = name->identifier();
_name += QLatin1Char('~');
_name += QString::fromLatin1(id->chars(), id->size());
}
void NamePrettyPrinter::visit(OperatorNameId *name)
void NamePrettyPrinter::visit(const OperatorNameId *name)
{
_name += QLatin1String("operator ");
switch (name->kind()) { // ### i should probably do this in OperatorNameId
@@ -236,13 +236,13 @@ void NamePrettyPrinter::visit(OperatorNameId *name)
} // switch
}
void NamePrettyPrinter::visit(ConversionNameId *name)
void NamePrettyPrinter::visit(const ConversionNameId *name)
{
_name += QLatin1String("operator ");
_name += overview()->prettyType(name->type());
}
void NamePrettyPrinter::visit(QualifiedNameId *name)
void NamePrettyPrinter::visit(const QualifiedNameId *name)
{
if (name->isGlobal())
_name += QLatin1String("::");
@@ -254,10 +254,10 @@ void NamePrettyPrinter::visit(QualifiedNameId *name)
}
}
void NamePrettyPrinter::visit(SelectorNameId *name)
void NamePrettyPrinter::visit(const SelectorNameId *name)
{
for (unsigned i = 0; i < name->nameCount(); ++i) {
Name *n = name->nameAt(i);
const Name *n = name->nameAt(i);
if (!n)
continue;

View File

@@ -44,18 +44,18 @@ public:
virtual ~NamePrettyPrinter();
const Overview *overview() const;
QString operator()(Name *name);
QString operator()(const Name *name);
protected:
QString switchName(const QString &name = QString());
virtual void visit(NameId *name);
virtual void visit(TemplateNameId *name);
virtual void visit(DestructorNameId *name);
virtual void visit(OperatorNameId *name);
virtual void visit(ConversionNameId *name);
virtual void visit(QualifiedNameId *name);
virtual void visit(SelectorNameId *name);
virtual void visit(const NameId *name);
virtual void visit(const TemplateNameId *name);
virtual void visit(const DestructorNameId *name);
virtual void visit(const OperatorNameId *name);
virtual void visit(const ConversionNameId *name);
virtual void visit(const QualifiedNameId *name);
virtual void visit(const SelectorNameId *name);
private:
const Overview *_overview;

View File

@@ -117,13 +117,13 @@ void Overview::setShowFullyQualifiedNamed(bool showFullyQualifiedNames)
_showFullyQualifiedNames = showFullyQualifiedNames;
}
QString Overview::prettyName(Name *name) const
QString Overview::prettyName(const Name *name) const
{
NamePrettyPrinter pp(this);
return pp(name);
}
QString Overview::prettyType(const FullySpecifiedType &ty, Name *name) const
QString Overview::prettyType(const FullySpecifiedType &ty, const Name *name) const
{
return prettyType(ty, prettyName(name));
}

View File

@@ -66,14 +66,14 @@ public:
int markedArgumentEnd() const;
void setMarkedArgumentEnd(int end);
QString operator()(Name *name) const
QString operator()(const Name *name) const
{ return prettyName(name); }
QString operator()(const FullySpecifiedType &type, Name *name = 0) const
QString operator()(const FullySpecifiedType &type, const Name *name = 0) const
{ return prettyType(type, name); }
QString prettyName(Name *name) const;
QString prettyType(const FullySpecifiedType &type, Name *name = 0) const;
QString prettyName(const Name *name) const;
QString prettyType(const FullySpecifiedType &type, const Name *name = 0) const;
QString prettyType(const FullySpecifiedType &type, const QString &name) const;
private:

View File

@@ -181,11 +181,11 @@ bool ResolveExpression::visit(NewExpressionAST *ast)
bool ResolveExpression::visit(TypeidExpressionAST *)
{
Name *std_type_info[2];
const Name *std_type_info[2];
std_type_info[0] = control()->nameId(control()->findOrInsertIdentifier("std"));
std_type_info[1] = control()->nameId(control()->findOrInsertIdentifier("type_info"));
Name *q = control()->qualifiedNameId(std_type_info, 2, /*global=*/ true);
const Name *q = control()->qualifiedNameId(std_type_info, 2, /*global=*/ true);
FullySpecifiedType ty(control()->namedType(q));
addResult(ty);
@@ -277,8 +277,8 @@ bool ResolveExpression::visit(ThisExpressionAST *)
FullySpecifiedType ptrTy(control()->pointerType(classTy));
addResult(ptrTy, fun);
break;
} else if (QualifiedNameId *q = fun->name()->asQualifiedNameId()) {
Name *nestedNameSpecifier = 0;
} else if (const QualifiedNameId *q = fun->name()->asQualifiedNameId()) {
const Name *nestedNameSpecifier = 0;
if (q->nameCount() == 1 && q->isGlobal())
nestedNameSpecifier = q->nameAt(0);
else
@@ -355,7 +355,7 @@ bool ResolveExpression::visit(CompoundLiteralAST *ast)
bool ResolveExpression::visit(QualifiedNameAST *ast)
{
ResolveClass resolveClass;
Name *name = ast->name;
const Name *name = ast->name;
QList<Symbol *> symbols = _context.resolve(name);
foreach (Symbol *symbol, symbols) {
@@ -451,7 +451,7 @@ bool ResolveExpression::visit(CallAST *ast)
++actualArgumentCount;
}
Name *functionCallOp = control()->operatorNameId(OperatorNameId::FunctionCallOp);
const Name *functionCallOp = control()->operatorNameId(OperatorNameId::FunctionCallOp);
foreach (const LookupItem &result, baseResults) {
FullySpecifiedType ty = result.type().simplified();
@@ -495,7 +495,7 @@ bool ResolveExpression::visit(ArrayAccessAST *ast)
const QList<LookupItem> indexResults = operator()(ast->expression);
ResolveClass resolveClass;
Name *arrayAccessOp = control()->operatorNameId(OperatorNameId::ArrayAccessOp);
const Name *arrayAccessOp = control()->operatorNameId(OperatorNameId::ArrayAccessOp);
foreach (const LookupItem &result, baseResults) {
FullySpecifiedType ty = result.type().simplified();
@@ -537,7 +537,7 @@ bool ResolveExpression::visit(MemberAccessAST *ast)
QList<LookupItem> baseResults = _results;
// Evaluate the expression-id that follows the access operator.
Name *memberName = 0;
const Name *memberName = 0;
if (ast->member_name)
memberName = ast->member_name->name;
@@ -594,7 +594,7 @@ ResolveExpression::resolveBaseExpression(const QList<LookupItem> &baseResults, i
if (NamedType *namedTy = ty->asNamedType()) {
ResolveClass resolveClass;
Name *arrowAccessOp = control()->operatorNameId(OperatorNameId::ArrowOp);
const Name *arrowAccessOp = control()->operatorNameId(OperatorNameId::ArrowOp);
const QList<Symbol *> candidates = resolveClass(namedTy->name(), result, _context);
foreach (Symbol *classObject, candidates) {
@@ -663,7 +663,7 @@ ResolveExpression::resolveBaseExpression(const QList<LookupItem> &baseResults, i
QList<LookupItem>
ResolveExpression::resolveMemberExpression(const QList<LookupItem> &baseResults,
unsigned accessOp,
Name *memberName,
const Name *memberName,
bool *replacedDotOperator) const
{
ResolveClass resolveClass;
@@ -677,7 +677,7 @@ ResolveExpression::resolveMemberExpression(const QList<LookupItem> &baseResults,
results += resolveMember(memberName, klass);
else if (NamedType *namedTy = ty->asNamedType()) {
Name *className = namedTy->name();
const Name *className = namedTy->name();
const QList<Symbol *> classes = resolveClass(className, r, _context);
foreach (Symbol *c, classes) {
@@ -691,8 +691,8 @@ ResolveExpression::resolveMemberExpression(const QList<LookupItem> &baseResults,
}
QList<LookupItem>
ResolveExpression::resolveMember(Name *memberName, Class *klass,
Name *className) const
ResolveExpression::resolveMember(const Name *memberName, Class *klass,
const Name *className) const
{
QList<LookupItem> results;
@@ -709,19 +709,19 @@ ResolveExpression::resolveMember(Name *memberName, Class *klass,
foreach (Symbol *candidate, candidates) {
FullySpecifiedType ty = candidate->type();
Name *unqualifiedNameId = className;
const Name *unqualifiedNameId = className;
if (QualifiedNameId *q = className->asQualifiedNameId())
if (const QualifiedNameId *q = className->asQualifiedNameId())
unqualifiedNameId = q->unqualifiedNameId();
if (TemplateNameId *templId = unqualifiedNameId->asTemplateNameId()) {
if (const TemplateNameId *templId = unqualifiedNameId->asTemplateNameId()) {
GenTemplateInstance::Substitution subst;
for (unsigned i = 0; i < templId->templateArgumentCount(); ++i) {
FullySpecifiedType templArgTy = templId->templateArgumentAt(i);
if (i < klass->templateParameterCount()) {
Name *templArgName = klass->templateParameterAt(i)->name();
const Name *templArgName = klass->templateParameterAt(i)->name();
if (templArgName && templArgName->identifier()) {
const Identifier *templArgId = templArgName->identifier();
subst.append(qMakePair(templArgId, templArgTy));
@@ -741,7 +741,7 @@ ResolveExpression::resolveMember(Name *memberName, Class *klass,
QList<LookupItem>
ResolveExpression::resolveMember(Name *memberName, ObjCClass *klass) const
ResolveExpression::resolveMember(const Name *memberName, ObjCClass *klass) const
{
QList<LookupItem> results;
@@ -774,7 +774,7 @@ bool ResolveExpression::visit(ObjCMessageExpressionAST *ast)
if (!receiverResults.isEmpty()) {
LookupItem result = receiverResults.first();
FullySpecifiedType ty = result.type().simplified();
Name *klassName = 0;
const Name *klassName = 0;
if (const ObjCClass *classTy = ty->asObjCClassType()) {
// static access, e.g.:
@@ -805,7 +805,7 @@ bool ResolveExpression::visit(ObjCMessageExpressionAST *ast)
ResolveClass::ResolveClass()
{ }
QList<Symbol *> ResolveClass::operator()(Name *name,
QList<Symbol *> ResolveClass::operator()(const Name *name,
const LookupItem &p,
const LookupContext &context)
{
@@ -815,7 +815,7 @@ QList<Symbol *> ResolveClass::operator()(Name *name,
return symbols;
}
QList<Symbol *> ResolveClass::resolveClass(Name *name,
QList<Symbol *> ResolveClass::resolveClass(const Name *name,
const LookupItem &p,
const LookupContext &context)
{
@@ -873,7 +873,7 @@ QList<Symbol *> ResolveClass::resolveClass(Name *name,
ResolveObjCClass::ResolveObjCClass()
{}
QList<Symbol *> ResolveObjCClass::operator ()(Name *name,
QList<Symbol *> ResolveObjCClass::operator ()(const Name *name,
const LookupItem &p,
const LookupContext &context)
{

View File

@@ -48,17 +48,17 @@ public:
QList<LookupItem> resolveMemberExpression(const QList<LookupItem> &baseResults,
unsigned accessOp,
Name *memberName,
const Name *memberName,
bool *replacedDotOperator = 0) const;
QList<LookupItem> resolveBaseExpression(const QList<LookupItem> &baseResults,
int accessOp,
bool *replacedDotOperator = 0) const;
QList<LookupItem> resolveMember(Name *memberName, Class *klass,
Name *className = 0) const;
QList<LookupItem> resolveMember(const Name *memberName, Class *klass,
const Name *className = 0) const;
QList<LookupItem> resolveMember(Name *memberName, ObjCClass *klass) const;
QList<LookupItem> resolveMember(const Name *memberName, ObjCClass *klass) const;
protected:
QList<LookupItem> switchResults(const QList<LookupItem> &symbols);
@@ -125,12 +125,12 @@ class CPLUSPLUS_EXPORT ResolveClass
public:
ResolveClass();
QList<Symbol *> operator()(Name *name,
QList<Symbol *> operator()(const Name *name,
const LookupItem &p,
const LookupContext &context);
private:
QList<Symbol *> resolveClass(Name *name,
QList<Symbol *> resolveClass(const Name *name,
const LookupItem &p,
const LookupContext &context);
@@ -143,7 +143,7 @@ class CPLUSPLUS_EXPORT ResolveObjCClass
public:
ResolveObjCClass();
QList<Symbol *> operator()(Name *name,
QList<Symbol *> operator()(const Name *name,
const LookupItem &p,
const LookupContext &context);
};

View File

@@ -327,7 +327,7 @@ void TypePrettyPrinter::visit(Function *type)
if (index + 1 == _overview->markedArgument())
const_cast<Overview*>(_overview)->setMarkedArgumentBegin(_text.length());
Name *name = 0;
const Name *name = 0;
if (_overview->showArgumentNames())
name = arg->name();