Review Request 118700: Special handling of the QML "parent" identifier

Denis Steckelmacher steckdenis at yahoo.fr
Thu Jun 12 19:41:59 UTC 2014



> On June 12, 2014, 7:33 p.m., Sven Brauch wrote:
> > duchain/expressionvisitor.cpp, line 200
> > <https://git.reviewboard.kde.org/r/118700/diff/2/?file=280573#file280573line200>
> >
> >     maybe it makes sense to have a (member) flag for this, then you don't have to .byteArray() the IndexedString for every declaration -- it's expensive

Yes, I've seen that byteArray is expensive and I'm looking for another solution, but using a member flag wouldn't be enough, because a new ExpressionVisitor is instantiated for every expression that has to be visited, and expressions usually contain only one or two identifiers. It's because the call is expensive that I've put it after "declaration == "parent"", so that this patch is "free" for every declaration that isn't named "parent".


- Denis


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


On June 12, 2014, 7:27 p.m., Denis Steckelmacher wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/118700/
> -----------------------------------------------------------
> 
> (Updated June 12, 2014, 7:27 p.m.)
> 
> 
> Review request for KDevelop.
> 
> 
> Repository: kdev-qmljs
> 
> 
> Description
> -------
> 
> This patch adds a special-case for "parent" in ExpressionVisitor. Even if every QML object has a "parent" property of type QQuickItem, the user most of the time wants to refer to the enclosing QML component when he/she types "parent". If there is no enclosing QML component (the current component is a top-level one or something else happened), then ExpressionVisitor falls back to the old behavior and returns a QQuickItem instance.
> 
> I would like to be able to activate this special handling of "parent" only for QML files, because Javascript files may use "parent" for something else. Is it possible, given a DUContext, to find its language? (or is there a way for the QML/JS plugin to store in the DUContext that the file is a Javascript one or a QML one?)
> 
> 
> Diffs
> -----
> 
>   codecompletion/tests/qmlcompletiontest.cpp 1b5cdee 
>   duchain/expressionvisitor.cpp 6545997 
>   tests/files/test.qml 2d3dc7d 
> 
> Diff: https://git.reviewboard.kde.org/r/118700/diff/
> 
> 
> Testing
> -------
> 
> A new unit test has been added. "parent" is used to refer to the enclosing component of a sub-component, and uses are correctly built. The rest of the unit tests pass. Manual testing shows that the highlighting of "parent" and the code-completion for "parent." is as expected.
> 
> 
> Thanks,
> 
> Denis Steckelmacher
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20140612/58a5e686/attachment.html>


More information about the KDevelop-devel mailing list