aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/cplusplus
diff options
context:
space:
mode:
authorRoberto Raggi <[email protected]>2009-02-09 17:44:06 +0100
committerRoberto Raggi <[email protected]>2009-02-09 17:49:12 +0100
commitd01795d9334a96f0ae3f2b19b689fe9abd7fdf34 (patch)
tree79e782f3e7a3797750e9e37cf26106f322426e8a /src/libs/cplusplus
parentce22a96041ed7a61b09ea9596f415d30d67e68f1 (diff)
Reimplemented Type::as*Type() using virtual methods.
Diffstat (limited to 'src/libs/cplusplus')
-rw-r--r--src/libs/cplusplus/Icons.cpp6
-rw-r--r--src/libs/cplusplus/OverviewModel.cpp2
-rw-r--r--src/libs/cplusplus/ResolveExpression.cpp14
3 files changed, 12 insertions, 10 deletions
diff --git a/src/libs/cplusplus/Icons.cpp b/src/libs/cplusplus/Icons.cpp
index e0b50903c39..8626088052f 100644
--- a/src/libs/cplusplus/Icons.cpp
+++ b/src/libs/cplusplus/Icons.cpp
@@ -63,11 +63,13 @@ Icons::Icons()
QIcon Icons::iconForSymbol(const Symbol *symbol) const
{
- if (symbol->isFunction() || (symbol->isDeclaration() && symbol->type()->isFunction()))
+ FullySpecifiedType symbolType = symbol->type();
+ if (symbol->isFunction() || (symbol->isDeclaration() && symbolType &&
+ symbolType->isFunctionType()))
{
const Function *function = symbol->asFunction();
if (!function)
- function = symbol->type()->asFunction();
+ function = symbol->type()->asFunctionType();
if (function->isSlot()) {
if (function->isPublic()) {
diff --git a/src/libs/cplusplus/OverviewModel.cpp b/src/libs/cplusplus/OverviewModel.cpp
index fe78cb34332..1bef20f36d3 100644
--- a/src/libs/cplusplus/OverviewModel.cpp
+++ b/src/libs/cplusplus/OverviewModel.cpp
@@ -171,7 +171,7 @@ QVariant OverviewModel::data(const QModelIndex &index, int role) const
if (! symbol->isScopedSymbol() || symbol->isFunction()) {
QString type = _overview.prettyType(symbol->type());
if (! type.isEmpty()) {
- if (! symbol->type()->isFunction())
+ if (! symbol->type()->isFunctionType())
name += QLatin1String(": ");
name += type;
}
diff --git a/src/libs/cplusplus/ResolveExpression.cpp b/src/libs/cplusplus/ResolveExpression.cpp
index e6d4d81adce..4f39b8cad22 100644
--- a/src/libs/cplusplus/ResolveExpression.cpp
+++ b/src/libs/cplusplus/ResolveExpression.cpp
@@ -512,7 +512,7 @@ bool ResolveExpression::visit(CallAST *ast)
_results.clear();
foreach (Result p, baseResults) {
- if (Function *funTy = p.first->asFunction()) {
+ if (Function *funTy = p.first->asFunctionType()) {
unsigned minNumberArguments = 0;
for (; minNumberArguments < funTy->argumentCount(); ++minNumberArguments) {
Argument *arg = funTy->argumentAt(minNumberArguments)->asArgument();
@@ -528,7 +528,7 @@ bool ResolveExpression::visit(CallAST *ast)
p.first = funTy->returnType();
addResult(p);
}
- } else if (Class *classTy = p.first->asClass()) {
+ } else if (Class *classTy = p.first->asClassType()) {
// Constructor call
p.first = control()->namedType(classTy->name());
addResult(p);
@@ -566,7 +566,7 @@ bool ResolveExpression::visit(ArrayAccessAST *ast)
resolveArrayOperator(p, namedTy, classObject->asClass());
foreach (Result r, overloads) {
FullySpecifiedType ty = r.first;
- Function *funTy = ty->asFunction();
+ Function *funTy = ty->asFunctionType();
if (! funTy)
continue;
@@ -621,7 +621,7 @@ ResolveExpression::resolveMemberExpression(const QList<Result> &baseResults,
classObject->asClass());
foreach (Result r, overloads) {
FullySpecifiedType ty = r.first;
- Function *funTy = ty->asFunction();
+ Function *funTy = ty->asFunctionType();
if (! funTy)
continue;
@@ -651,7 +651,7 @@ ResolveExpression::resolveMemberExpression(const QList<Result> &baseResults,
if (NamedType *namedTy = ty->asNamedType())
results += resolveMember(p, memberName, namedTy);
- else if (Function *fun = ty->asFunction()) {
+ else if (Function *fun = ty->asFunctionType()) {
if (fun->scope()->isBlockScope() || fun->scope()->isNamespaceScope()) {
ty = fun->returnType();
@@ -849,7 +849,7 @@ QList<Symbol *> ResolveClass::resolveClass(NamedType *namedTy,
resolvedSymbols.append(klass);
} else if (candidate->isTypedef()) {
if (Declaration *decl = candidate->asDeclaration()) {
- if (Class *asClass = decl->type()->asClass()) {
+ if (Class *asClass = decl->type()->asClassType()) {
// typedef struct { } Point;
// Point pt;
// pt.
@@ -863,7 +863,7 @@ QList<Symbol *> ResolveClass::resolveClass(NamedType *namedTy,
}
}
} else if (Declaration *decl = candidate->asDeclaration()) {
- if (Function *funTy = decl->type()->asFunction()) {
+ if (Function *funTy = decl->type()->asFunctionType()) {
// QString foo("ciao");
// foo.
if (funTy->scope()->isBlockScope() || funTy->scope()->isNamespaceScope()) {