From 833f097c1d9bd30d05b28f0f17bc4624e56d6e94 Mon Sep 17 00:00:00 2001
From: Roberto Raggi <roberto.raggi@nokia.com>
Date: Mon, 16 Aug 2010 11:13:20 +0200
Subject: [PATCH] Get rid of Function::block/setBlock.

---
 src/shared/cplusplus/Bind.cpp    |  1 -
 src/shared/cplusplus/Symbols.cpp | 15 ++++-----------
 src/shared/cplusplus/Symbols.h   |  4 ----
 3 files changed, 4 insertions(+), 16 deletions(-)

diff --git a/src/shared/cplusplus/Bind.cpp b/src/shared/cplusplus/Bind.cpp
index 89cdbf6ad43..97d2f491d6f 100644
--- a/src/shared/cplusplus/Bind.cpp
+++ b/src/shared/cplusplus/Bind.cpp
@@ -1905,7 +1905,6 @@ bool Bind::visit(FunctionDefinitionAST *ast)
 
         if (CompoundStatementAST *c = ast->function_body->asCompoundStatement()) {
             if (c->symbol) {
-                fun->setBlock(c->symbol);
                 fun->setEndOffset(c->symbol->endOffset());
             }
         }
diff --git a/src/shared/cplusplus/Symbols.cpp b/src/shared/cplusplus/Symbols.cpp
index a2259e715ae..121ea0364ea 100644
--- a/src/shared/cplusplus/Symbols.cpp
+++ b/src/shared/cplusplus/Symbols.cpp
@@ -164,7 +164,6 @@ void TypenameArgument::visitSymbol0(SymbolVisitor *visitor)
 
 Function::Function(TranslationUnit *translationUnit, unsigned sourceLocation, const Name *name)
     : Scope(translationUnit, sourceLocation, name),
-      _block(0),
       _flags(0)
 { }
 
@@ -189,12 +188,6 @@ int Function::methodKey() const
 void Function::setMethodKey(int key)
 { f._methodKey = key; }
 
-Block *Function::block() const
-{ return _block; }
-
-void Function::setBlock(Block *block)
-{ _block = block; }
-
 bool Function::isEqualTo(const Type *other) const
 {
     const Function *o = other->asFunctionType();
@@ -293,10 +286,10 @@ bool Function::hasReturnType() const
 
 unsigned Function::argumentCount() const
 {
-    if (_block)
-        return memberCount() - 1;
-
-    return memberCount();
+    const unsigned c = memberCount();
+    if (c > 0 && memberAt(c - 1)->isBlock())
+        return c - 1;
+    return c;
 }
 
 Symbol *Function::argumentAt(unsigned index) const
diff --git a/src/shared/cplusplus/Symbols.h b/src/shared/cplusplus/Symbols.h
index b3f388f9774..dd7fe67a1a4 100644
--- a/src/shared/cplusplus/Symbols.h
+++ b/src/shared/cplusplus/Symbols.h
@@ -297,9 +297,6 @@ public:
     int methodKey() const;
     void setMethodKey(int key);
 
-    Block *block() const;
-    void setBlock(Block *block);
-
     FullySpecifiedType returnType() const;
     void setReturnType(const FullySpecifiedType &returnType);
 
@@ -360,7 +357,6 @@ protected:
 
 private:
     FullySpecifiedType _returnType;
-    Block *_block;
     struct Flags {
         unsigned _isVirtual: 1;
         unsigned _isVariadic: 1;
-- 
GitLab