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

List:       kde-commits
Subject:    KDE/kdevelop/languages/cpp/cppduchain
From:       David Nolden <david.nolden.kde () art-master ! de>
Date:       2008-05-31 22:55:14
Message-ID: 1212274514.981915.21009.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 815018 by zwabel:

- Adapt to the change in kdevplatform
- Only create problem items from failed overload-resolution if a macro is set. \
Currently it happens too often, and is too slow.



 M  +4 -4      cppducontext.h  
 M  +7 -1      expressionvisitor.cpp  
 M  +1 -1      overloadresolution.cpp  
 M  +1 -1      typeutils.cpp  


--- trunk/KDE/kdevelop/languages/cpp/cppduchain/cppducontext.h #815017:815018
@@ -463,7 +463,7 @@
       return true;
     }
 
-    virtual void findLocalDeclarationsInternal( const QualifiedIdentifier& \
identifier, const SimpleCursor & position, const AbstractType::Ptr& dataType, bool \
allowUnqualifiedMatch, QList<Declaration*>& ret, const ImportTrace& trace, typename \
BaseContext::SearchFlags flags ) const +    virtual void \
findLocalDeclarationsInternal( const QualifiedIdentifier& identifier, const \
SimpleCursor & position, const AbstractType::Ptr& dataType, QList<Declaration*>& ret, \
const ImportTrace& trace, typename BaseContext::SearchFlags flags ) const  {
       ifDebug( kDebug(9007) << "findLocalDeclarationsInternal in " << this << "with \
parent" << this->parentContext() << "(" << this->scopeIdentifier() <<") for \"" << \
                identifier.toString() << "\""; )
       ifDebug( if( BaseContext::owner() && BaseContext::owner() ) kDebug(9007) << \
"in declaration: " << "(" << BaseContext::owner()->toString(); ) @@ -479,7 +479,7 @@
 
         int retCount = ret.count();
       
-        BaseContext::findLocalDeclarationsInternal(identifier, position, dataType, \
allowUnqualifiedMatch, ret, trace, flags ); +        \
BaseContext::findLocalDeclarationsInternal(identifier, position, dataType, ret, \
trace, flags );  
         ifDebug( kDebug(9007) << "basically found:" << ret.count() - retCount << \
"containing" << BaseContext::localDeclarations().count() << "searching-position" << \
position.textCursor(); )  
@@ -504,7 +504,7 @@
           ///Search in the context this one was instantiated from
           QList<Declaration*> decls;
           ifDebug( kDebug(9007) << "searching base"; )
-          m_instantiatedFrom->findLocalDeclarationsInternal( identifier, position, \
dataType, allowUnqualifiedMatch, decls, trace, flags ); +          \
m_instantiatedFrom->findLocalDeclarationsInternal( identifier, position, dataType, \
decls, trace, flags );  
           ifDebug( if( BaseContext::owner() && BaseContext::owner() ) kDebug(9007) \
                << "in declaration: " << "(" << BaseContext::owner()->toString(); )
           ifDebug( kDebug(9007) << "found" << decls.count() << "in base"; )
@@ -631,7 +631,7 @@
         QVector<Declaration*> decls = m_instantiatedFrom->localDeclarations();
 
         foreach( Declaration* baseDecls, decls )
-          this->findLocalDeclarationsInternal( \
QualifiedIdentifier(baseDecls->identifier()), SimpleCursor::invalid(), \
AbstractType::Ptr(), true, temp, trace, DUContext::NoFiltering ); +          \
this->findLocalDeclarationsInternal( QualifiedIdentifier(baseDecls->identifier()), \
SimpleCursor::invalid(), AbstractType::Ptr(), temp, trace, DUContext::NoFiltering );  \
}  
       return BaseContext::mergeDeclarationsInternal(definitions, position, \
                hadContexts, trace, searchInParents, currentDepth);
--- trunk/KDE/kdevelop/languages/cpp/cppduchain/expressionvisitor.cpp #815017:815018
@@ -45,6 +45,10 @@
 //If this is enabled, all encounterd problems will be dumped to kDebug
 //#define DUMP_PROBLEMS
 
+//If this is enabled, problems will be created when no overloaded function was found \
for a function-call. This is expensive, +//because the problem report contains a lot \
of information, and the problem currently appears very often. +//#define \
DEBUG_FUNCTION_CALLS +
 ///Remember to always when visiting a node create a PushPositiveValue object for the \
context  
 /** A typical expression:
@@ -1491,7 +1495,7 @@
         
         if( constructedType && constructedType->declaration() && \
constructedType->declaration()->internalContext() )  {
-          m_lastDeclarations = \
convert(constructedType->declaration()->internalContext()->findLocalDeclarations( \
QualifiedIdentifier(constructedType->declaration()->identifier()), \
constructedType->declaration()->internalContext()->range().end, topContext(), \
AbstractType::Ptr(), true, DUContext::OnlyFunctions )); +          m_lastDeclarations \
= convert(constructedType->declaration()->internalContext()->findLocalDeclarations( \
QualifiedIdentifier(constructedType->declaration()->identifier()), \
constructedType->declaration()->internalContext()->range().end, topContext(), \
AbstractType::Ptr(), DUContext::OnlyFunctions ));  }
       }
     }
@@ -1559,6 +1563,7 @@
 
     if( !chosenFunction && !m_strict ) {
       //Because we do not want to rely too much on our understanding of the code, we \
take the first function instead of totally failing. +#ifdef DEBUG_FUNCTION_CALLS
       QString params;
       foreach(const OverloadResolver::Parameter& param, m_parameters)
         params += param.toString() + ", ";
@@ -1575,6 +1580,7 @@
       }
       
       problem(node, QString("Could not find a function that matches the parameters. \
Using first candidate function. Parameters: %1 Candidates: \
%2").arg(params).arg(candidates)); +#endif
       fail = true;
     }
 
--- trunk/KDE/kdevelop/languages/cpp/cppduchain/overloadresolution.cpp #815017:815018
@@ -39,7 +39,7 @@
       return 0;
     
     QList<Declaration*> goodDeclarations;
-    QList<Declaration*> declarations = \
m_context->findLocalDeclarations(m_context->localScopeIdentifier(), \
KDevelop::SimpleCursor(), m_topContext.data(), AbstractType::Ptr(), false, \
DUContext::OnlyFunctions); +    QList<Declaration*> declarations = \
m_context->findLocalDeclarations(m_context->localScopeIdentifier(), \
KDevelop::SimpleCursor(), m_topContext.data(), AbstractType::Ptr(), \
DUContext::OnlyFunctions);  
     for( QList<Declaration*>::iterator it = declarations.begin(); it != \
declarations.end(); ++it ) {  if( (*it)->abstractType() )
--- trunk/KDE/kdevelop/languages/cpp/cppduchain/typeutils.cpp #815017:815018
@@ -279,7 +279,7 @@
       return;
     }
 
-    QList<Declaration*> declarations = \
context->findLocalDeclarations(QualifiedIdentifier(context->owner()->identifier()), \
SimpleCursor::invalid(), topContext, AbstractType::Ptr(), false, \
DUContext::OnlyFunctions); +    QList<Declaration*> declarations = \
context->findLocalDeclarations(QualifiedIdentifier(context->owner()->identifier()), \
SimpleCursor::invalid(), topContext, AbstractType::Ptr(), DUContext::OnlyFunctions);  \
                
     for( QList<Declaration*>::iterator it = declarations.begin(); it != \
                declarations.end(); ++it ) {
       ClassFunctionDeclaration* functionDeclaration = \
dynamic_cast<ClassFunctionDeclaration*>( *it );


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

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