Review Request 114628: Improves declarator parsing.

Milian Wolff mail at milianw.de
Mon Dec 23 14:13:22 UTC 2013


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


Yes, this really needs unit tests desperately. Also, please add comments linking to the sections of the standard (see e.g.: http://www.nongnu.org/hcb/ ) which describe the changes you did.

- Milian Wolff


On Dec. 22, 2013, 11:27 p.m., Paweł Nowak wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/114628/
> -----------------------------------------------------------
> 
> (Updated Dec. 22, 2013, 11:27 p.m.)
> 
> 
> Review request for KDevelop.
> 
> 
> Bugs: 280244
>     http://bugs.kde.org/show_bug.cgi?id=280244
> 
> 
> Repository: kdevelop
> 
> 
> Description
> -------
> 
> This patch fixes incorrect parsing of declarations like "int (func)(int);" - where the declarator id is inside parentheses but it is not a function pointer, as well as some more issues. I have attached a file comparing old and new parsing results. It shouldn't affect anything that was already parsed successfully.
> Additionally it eliminates some code duplication: now both parseDeclarator and parseAbstractDeclarator call parseDeclaratorInternal.
> 
> However, still a lot of old problems remain: 
>  -function pointers are displayed as functions
>  -grouping in declarations like "int *(test[3])" is dropped so it becomes "int *test[3]"
>  -function types as template parameters are not handled correctly - "std::function<void(int)>" becomes "std::function<void>" somewhere in builders
> and fixing them doesn't look that easy.
> 
> This is my first contribution to kdevelop and I hope I haven't broken anything :)
> 
> 
> Diffs
> -----
> 
>   languages/cpp/cppduchain/contextbuilder.cpp 668aed1 
>   languages/cpp/cppduchain/declarationbuilder.cpp b264858 
>   languages/cpp/cppduchain/expressionvisitor.cpp d62f3e2 
>   languages/cpp/parser/ast.h db20d74 
>   languages/cpp/parser/codegenerator.cpp 2bc5f8e 
>   languages/cpp/parser/default_visitor.cpp 9b43ae0 
>   languages/cpp/parser/parser.h 933e2c8 
>   languages/cpp/parser/parser.cpp c59bd78 
> 
> Diff: https://git.reviewboard.kde.org/r/114628/diff/
> 
> 
> Testing
> -------
> 
> Current git head is pretty broken so I tested using commit 4ac7ec339a29ee419f08d9ff29ce544e8a710c7c.
> All tests pass (except for qtprinters, what is unrelated to this patch).
> 
> 
> File Attachments
> ----------------
> 
> Comparison between old and new declarator parsing
>   https://git.reviewboard.kde.org/media/uploaded/files/2013/12/22/eac1c5d3-5d1b-4916-9e2d-0ac825c1a92e__test2.cpp
> 
> 
> Thanks,
> 
> Paweł Nowak
> 
>

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


More information about the KDevelop-devel mailing list