Review Request 118600: Support QML signal declarations

Denis Steckelmacher steckdenis at yahoo.fr
Sat Jun 7 08:43:25 UTC 2014



> On June 7, 2014, 8:34 a.m., Sven Brauch wrote:
> > Can you maybe transform the AST into a custom data structure first and then share code for that?

I may be able to factorize code between FunctionDeclaration and UiPublicMember, but plugin files use an entirely different structure (it describes the methods and signals using QML components, not AST nodes). In fact, I'll see if converting UiPublicMember to a FunctionDeclaration (that I build myself) simplifies code. I wouldn't like to have 50 lines of code muting an UiPublicMember to a FunctionDeclaration just not to duplicate 20 lines.


- Denis


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/118600/#review59495
-----------------------------------------------------------


On June 6, 2014, 8:52 p.m., Denis Steckelmacher wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/118600/
> -----------------------------------------------------------
> 
> (Updated June 6, 2014, 8:52 p.m.)
> 
> 
> Review request for KDevelop.
> 
> 
> Repository: kdev-qmljs
> 
> 
> Description
> -------
> 
> This patch adds support for QML signal declarations:
> 
> Item {
>     signal test(int param1, bool param2)
> }
> 
> The patch is not the nicest ever, but the QMLJS AST is especially bad here. First, QML signals and properties are both handled using a single UiPublicMember node (even if they are completely different things), and signals are declared in a completely different mean than Javascript function expressions or plugin.qmltypes signals. There are therefore three ways of declaring a function (a JS function, signals/methods in plugin.qmltypes files and plain QML signals), and the three ways cannot share any code because they use a completely different AST structure (FunctionExpression + FormalParameterList, "Signal { Parameter {...} Parameter {...} }", UiPublicMember + UiParameterList.
> 
> 
> Diffs
> -----
> 
>   duchain/declarationbuilder.cpp 03ae915 
>   tests/files/test.qml d50e737 
> 
> Diff: https://git.reviewboard.kde.org/r/118600/diff/
> 
> 
> Testing
> -------
> 
> Two new unit tests have been added. The first one ensures that signals are properly declared (with their typed parameters), and the second one ensures that the "minimal" syntax for defining signals (without parameters) does not crash. All the other unit tests pass.
> 
> 
> Thanks,
> 
> Denis Steckelmacher
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20140607/12ce7e05/attachment-0001.html>


More information about the KDevelop-devel mailing list