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





<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On April 30th, 2014, 8:41 p.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;">From what I understand the idea of DelayedType is that you can put a type and then later replace it by various other types dynamically, like in C++ templates. I don't see how this matches the use case here. I'd prefer not to introduce the complexity of the DelayedType stuff, and instead just return mixed. Consider for example that with the removal of the oldcpp plugin soon-ish you will be the only user of several hundred lines of code if you use DelayedType, for no real reason (which makes removing or rethinking that code more difficult).</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;">I have replaced DelayedType with StructureType. I don't use a mixed type because typeFromClassName is mainly used to find the base class type of a class, and "mixed" does not have much sense here. For instance, if I type "Component { name: foo; prototype: QObject }", I want to declare "class foo : public QObject", not "class foo : public mixed".

I agree that it is not yet the perfect solution. The right solution would be to have a list of built-in base classes (QObject, QDeclarativeItem, etc), but building such a list may be a bit too much for this patch. Now, many StructureType instances are created, but the information shown to the user is what is expected.</pre>
<br />










<p>- Denis</p>


<br />
<p>On May 1st, 2014, 5:25 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 1, 2014, 5:25 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;">Sorry for the size of this patch, but most of the things added in this patch are needed in order for it to be unit-testable. This patch adds the following:

* A method that takes a QML type name ("int", "float", "bool" or any class name like "QObject") and returns the corresponding IntegralType, StructureType or DelayedType
* Support for plugin.qmltypes files that declare QML components and their properties, methods, signals and slots (methods, signals and slots have their argument types recognized)
* A new test file

This screenshot (http://steckdenis.be/static/images/kdev-js-qml-types.png) shows what KDevelop displays when I put my cursor on "Component". The component is correctly declared (using its name and its prototype), and its use is correctly detected (though this detection will come in a future patch). "Component" is highlighted instead of "name: "QAbstractItemModel"" because highlighting string literals was not pretty at all.

A future patch will add support for enumerations, then I will need to figure out how to correctly put all these declarations in the correct namespaces (each component comes with the domain name of the package in which it has to be registered).</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've added a testsuite for this patch, and it passes, even though it is quite minimal because there are still many things to do :-) .</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/declarationbuilder.h <span style="color: grey">(2f7affc)</span></li>

 <li>duchain/declarationbuilder.cpp <span style="color: grey">(9fc2e6c)</span></li>

 <li>tests/files/plugins.qml <span style="color: grey">(PRE-CREATION)</span></li>

</ul>

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







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








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