Review Request 112232: DUChain: fix template specialization for template class nested in class
Commit Hook
null at kde.org
Thu Aug 29 22:33:53 UTC 2013
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/112232/
-----------------------------------------------------------
(Updated Aug. 29, 2013, 10:33 p.m.)
Status
------
This change has been marked as submitted.
Review request for KDevelop.
Description
-------
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
{};
};
template<>
class A::B<int>
{
public:
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).
Diffs
-----
languages/cpp/cppduchain/declarationbuilder.cpp 7216f1f
languages/cpp/cppduchain/tests/test_duchain.cpp 0a32f0d
Diff: http://git.reviewboard.kde.org/r/112232/diff/
Testing
-------
Seems to work, I have used it for two weeks now. I haven't done any further testing.
Thanks,
Max Schwarz
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20130829/a0476d93/attachment.html>
More information about the KDevelop-devel
mailing list