<html>
<body>
<div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
<table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
<tr>
<td>
This is an automatically generated e-mail. To reply, visit:
<a href="http://git.reviewboard.kde.org/r/112232/">http://git.reviewboard.kde.org/r/112232/</a>
</td>
</tr>
</table>
<br />
<table bgcolor="#e0e0e0" width="100%" cellpadding="8" style="border: 1px gray solid;">
<tr>
<td>
<h1 style="margin-right: 0.2em; padding: 0; font-size: 10pt;">This change has been marked as submitted.</h1>
</td>
</tr>
</table>
<br />
<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('http://git.reviewboard.kde.org/static/rb/images/review_request_box_top_bg.ab6f3b1072c9.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
<tr>
<td>
<div>Review request for KDevelop.</div>
<div>By Max Schwarz.</div>
<p style="color: grey;"><i>Updated Aug. 29, 2013, 10:33 p.m.</i></p>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
<tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">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).</pre>
</td>
</tr>
</table>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
<tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Seems to work, I have used it for two weeks now. I haven't done any further testing.</pre>
</td>
</tr>
</table>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">
<li>languages/cpp/cppduchain/declarationbuilder.cpp <span style="color: grey">(7216f1f)</span></li>
<li>languages/cpp/cppduchain/tests/test_duchain.cpp <span style="color: grey">(0a32f0d)</span></li>
</ul>
<p><a href="http://git.reviewboard.kde.org/r/112232/diff/" style="margin-left: 3em;">View Diff</a></p>
</td>
</tr>
</table>
</div>
</body>
</html>