Review Request 112232: DUChain: fix template specialization for template class nested in class

Max Schwarz at
Fri Aug 23 23:16:26 UTC 2013

This is an automatically generated e-mail. To reply, visit:

Review request for KDevelop.


This patch tries to fix KDevelop's understanding of template specializations of template classes nested in other contexts, e.g.

class A
  template<class T>
  class B

class A::B<int>
    int value;

int main()
    A::B<int> a;
    return a.value; // KDevelop does not know value

My understanding of the DUChain code is very limited. But I think I have made out two apparent reasons and fixed them with this patch:
 a) findLocalDeclarations() is used to find A::B inside the global scope, which does not work. Use findDeclarations() instead.
 b) The template context cannot be found for template<...> class A::B, since a helper context for the prefix A:: is inserted between the
    template context and the class context.

Someone with DUChain experience needs to have a look at it. I'm not sure I did the right thing, especially with issue b).


  languages/cpp/cppduchain/declarationbuilder.cpp 7216f1f 



Seems to work, I have used it for two weeks now. I haven't done any further testing.


Max Schwarz

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the KDevelop-devel mailing list