Review Request: Parser support for C99 designated initializers

Alexandre Courbot gnurou at gmail.com
Thu Apr 12 13:30:03 UTC 2012



> On April 10, 2012, 8:22 a.m., Alexandre Courbot wrote:
> > Still not good unfortunately, the new parseDesignatedInitializer() causes a parse error on constructs like this:
> > 
> > #include <Qt/qstring.h>
> > 
> > void foo(const QString &s);
> > QString bar();
> > 
> > void f() {
> >     foo( bar() + " " );
> >     QString command;
> > }
> > 
> > Here the "QString command" line will raise a parser error (parses perfectly without this patch). Slightly changing the above line (like removing the parentheses on bar(), or changing the '+' to a ',' fixes it. Crazy.
> 
> Ivan Shapovalov wrote:
>     I've somewhat refactored the patch, it passes given testcases and this QString testcase without parse errors.
>     Could you provide the testcase which makes the original patch enter an infinite loop?

I do not have a testcase, but this happened when loading KDevplatform and KDevelop. After closing from 100% the background parser would eat all your memory. Could you provide the source of your updated version?


- Alexandre


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/103448/#review12286
-----------------------------------------------------------


On April 10, 2012, 6:17 a.m., Alexandre Courbot wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/103448/
> -----------------------------------------------------------
> 
> (Updated April 10, 2012, 6:17 a.m.)
> 
> 
> Review request for KDevelop and Milian Wolff.
> 
> 
> Description
> -------
> 
> Parser support for C99 designated initializers
> 
> Support C99 initializers in the C++ parser, e.g:
> 
> struct foo_t foo = {
>   .has_cake = true,
>   .nb_candles = 12,
> };
> 
> int bar[10] = {
>   [1] = 15,
>   [9] = 25,
> };
> 
> 
> Diffs
> -----
> 
>   languages/cpp/parser/parser.h 64b5c505866ac2a0ed847aa67e4c7809df3af6b5 
>   languages/cpp/parser/parser.cpp a45ee31a1207d56efef292babb2e774b51378ead 
>   languages/cpp/parser/tests/test_parser.h 2869d9ddae2632aced2f2e2fa966382da3a0082d 
>   languages/cpp/parser/tests/test_parser.cpp 94e3ee06dc9187568c000dcdd8baf8d87d1d06e6 
> 
> Diff: http://git.reviewboard.kde.org/r/103448/diff/
> 
> 
> Testing
> -------
> 
> Used it for a couple of weeks, ensured the parser tests all pass.
> 
> 
> Thanks,
> 
> Alexandre Courbot
> 
>

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


More information about the KDevelop-devel mailing list