<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="https://git.reviewboard.kde.org/r/117971/">https://git.reviewboard.kde.org/r/117971/</a>
     </td>
    </tr>
   </table>
   <br />





<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On May 3rd, 2014, 11:21 a.m. UTC, <b>Sven Brauch</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Nice! Add a unit test and then ship it.

You can do that for example like this:

    int useIndex = top->findUseAt(Cursor(3, 5));
    QVERIFY(useIndex != -1);
    QVERIFY(useIndex < top->usesCount());
    const Use* u = &(top->uses()[useIndex]);
    Declaration* d = u->usedDeclaration(top->topContext());
    // ...</pre>
 </blockquote>




 <p>On May 3rd, 2014, 11:27 a.m. UTC, <b>Sven Brauch</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Ah, you use those json tests. Not sure how to do it there. I'll try talking to olijg.</pre>
 </blockquote>





 <p>On May 3rd, 2014, 11:55 a.m. UTC, <b>Sven Brauch</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Ok, apparently you can do this:
/// "useCount" : 1
var i = 0
a += i

or so.</pre>
 </blockquote>








</blockquote>

<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Thanks! I've added a json test because there were already many json files. There are C++ tests for declarations and contexts, but it would have made the patch a bit too big to add a complete testsuite for the use builder. I'm happy that json-based tests can be extensive enough!</pre>
<br />










<p>- Denis</p>


<br />
<p>On May 3rd, 2014, 1:03 p.m. UTC, Denis Steckelmacher wrote:</p>








<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('https://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 Denis Steckelmacher.</div>


<p style="color: grey;"><i>Updated May 3, 2014, 1:03 p.m.</i></p>









<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
kdev-qmljs
</div>


<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;">The Javascript parser builds IdentifierExpression AST nodes in Javascript files and UiQualifiedId AST nodes in QML files. This patch adds support for the latter ones in UseBuilder. This enables the QML/JS plugin to detect the use of QML components in QML files.</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;">I don't know how to unit test the use builder, and I would welcome any hint about that :-) . I manually tested that the use of "Foo" in this snippet is correctly detected:

Component {
    name: "Foo"
}

Foo {}

When I put my cursor on Foo, "Component" gets highlighted (because the declaration of Foo is located on the Component keyword). If I click on "show uses" in the information popup of "Component", the first line and the line instantiating Foo are listed.</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>duchain/usebuilder.h <span style="color: grey">(39605ac)</span></li>

 <li>duchain/usebuilder.cpp <span style="color: grey">(3e5d0a1)</span></li>

</ul>

<p><a href="https://git.reviewboard.kde.org/r/117971/diff/" style="margin-left: 3em;">View Diff</a></p>







  </td>
 </tr>
</table>








  </div>
 </body>
</html>