[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/kdevelop/3.4/languages/cpp
From: Jens Dagerbo <jens.dagerbo () swipnet ! se>
Date: 2007-02-14 23:10:27
Message-ID: 1171494627.019588.23930.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 633711 by dagerbo:
Further improvement of "jump to declaration", now it includes types as well.
Again, patch by Kris Wong.
M +39 -2 cppcodecompletion.cpp
--- branches/kdevelop/3.4/languages/cpp/cppcodecompletion.cpp #633710:633711
@@ -4207,7 +4207,7 @@
{
if ( !m_activeCursor ) return;
- SimpleTypeConfiguration conf( m_activeFileName );
+ SimpleTypeConfiguration conf( m_activeFileName );
unsigned int line;
unsigned int column;
@@ -4221,11 +4221,48 @@
LocateResult type = result.resultType;
if ( type && type->resolved() )
{
- if ( type->resolved()->asFunction() )
+ if ( type->resolved()->isNamespace() )
{
+ SimpleTypeCachedNamespace * ns = dynamic_cast<SimpleTypeCachedNamespace*>( \
type->resolved().data() ); + if ( ns )
+ {
+ SimpleTypeNamespace::SlaveList slaves = ns->getSlaves( getIncludeFiles() );
+ if ( slaves.begin() != slaves.end() )
+ {
+ SimpleTypeCodeModel* cm = dynamic_cast<SimpleTypeCodeModel*>( ( \
*slaves.begin() ).first.first.resolved().data() ); + if ( cm && cm->item() )
+ {
+ SimpleTypeCachedCodeModel* t = new SimpleTypeCachedCodeModel( cm->item() );
+ d = t->desc().resolved()->getDeclarationInfo();
+ }
+ else
+ {
+ SimpleTypeNamespace* cn = dynamic_cast<SimpleTypeNamespace*>( ( \
*slaves.begin() ).first.first.resolved().data() ); + if ( cn )
+ {
+ TypePointer t = new SimpleTypeNamespace( cn ); //To avoid endless recursion, \
this needs to be done(the dynamic-cast above fails) + d = \
t->desc().resolved()->getDeclarationInfo(); + }
+ }
+ }
+ }
+ }
+ else
+ {
d = type->resolved()->getDeclarationInfo();
}
}
+ else if ( type && type.trace() )
+ {
+ QValueList< QPair<SimpleTypeImpl::MemberInfo, TypeDesc> > trace = \
type.trace()->trace(); + if ( !trace.isEmpty() )
+ {
+ if ( trace.begin() != trace.end() )
+ {
+ d = (*trace.begin()).first.decl;
+ }
+ }
+ }
}
if ( d )
{
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic