[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    extragear/sdk/kdevplatform/language/duchain
From:       Niko Sams <niko.sams () gmail ! com>
Date:       2010-02-20 17:24:38
Message-ID: 1266686678.158158.10768.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1093349 by nsams:

Update symbol table when base classes changed.
This makes it possible to store flags dependent on the base classes in the symbol table.
It is used in php for a Exception flag for classes that extend Exception.

 M  +9 -0      classdeclaration.cpp  


--- trunk/extragear/sdk/kdevplatform/language/duchain/classdeclaration.cpp #1093348:1093349
@@ -50,7 +50,10 @@
 REGISTER_DUCHAIN_ITEM(ClassDeclaration);
 
 void ClassDeclaration::clearBaseClasses() {
+  bool wasInSymbolTable = inSymbolTable();
+  setInSymbolTable(false);
   d_func_dynamic()->baseClassesList().clear();
+  setInSymbolTable(wasInSymbolTable);
 }
 
 uint ClassDeclaration::baseClassesSize() const {
@@ -62,12 +65,18 @@
 }
 
 void ClassDeclaration::addBaseClass(BaseClassInstance klass) {
+  bool wasInSymbolTable = inSymbolTable();
+  setInSymbolTable(false);
   d_func_dynamic()->baseClassesList().append(klass);
+  setInSymbolTable(wasInSymbolTable);
 }
 
 void ClassDeclaration::replaceBaseClass(uint n, BaseClassInstance klass) {
   Q_ASSERT(n <= d_func()->baseClassesSize());
+  bool wasInSymbolTable = inSymbolTable();
+  setInSymbolTable(false);
   d_func_dynamic()->baseClassesList()[n] = klass;
+  setInSymbolTable(wasInSymbolTable);
 }
 
 ClassDeclaration::~ClassDeclaration()
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic