[cfe-dev] Attribute on constructor parameter rejected
Richard Smith
richard at metafoo.co.uk
Thu Sep 5 18:27:52 PDT 2013
On Thu, Sep 5, 2013 at 6:19 PM, Guillaume Papin
<guillaume.papin at epitech.eu>wrote:
> Great, that was fast.
>
> Just in case someone read the code of the example, I believe the
> attribute [[gnu::unused]] should be used after the parameter name
> instead of before its type.
>
> void f(int i [[gnu::unused]]) {}
As it happens, both locations are valid, and mean the same thing. You could
move the attribute after the parameter name to work around the problem,
however.
> Richard Smith <richard at metafoo.co.uk> writes:
>
> > On Thu, Sep 5, 2013 at 12:50 PM, Guillaume Papin <
> guillaume.papin at epitech.eu>
> > wrote:
> >
> > Hum, I updated yesterday so it's quite recent. I tried the following
> > with both my system-wide install of clang (version 3.2) and the one I
> > built after my update yesterday:
> >
> > [papin_g:~/GSoC/build]$ cat /tmp/gnu-unused.cpp
> >
> > struct AB {
> > AB([[gnu::unused]] int i) {}
> >
> > void f([[gnu::unused]] int i) {} // no error for this line
> > };
> >
> > [papin_g:~/GSoC/build]$ ./bin/clang++ -std=c++11 -fsyntax-only
> > /tmp/gnu-unused.cpp
> > /tmp/gnu-unused.cpp:2:6: error: expected member name or ';' after
> > declaration specifiers
> >
> > AB([[gnu::unused]] int i) {}
> >
> > ~~ ^
> > /tmp/gnu-unused.cpp:2:6: error: an attribute list cannot appear
> here
> >
> > AB([[gnu::unused]] int i) {}
> >
> > ^~~~~~~~~~~~~~~
> > /tmp/gnu-unused.cpp:2:22: error: expected ')'
> >
> > AB([[gnu::unused]] int i) {}
> >
> > ^
> > /tmp/gnu-unused.cpp:2:5: note: to match this '('
> >
> > AB([[gnu::unused]] int i) {}
> >
> > ^
> > 3 errors generated.
> >
> >
> > I will update Clang tomorrow and see if the problem persists. Maybe
> it's
> > only me and I checked out at the wrong time or it's has been fixed
> since
> > yesterday.
> >
> >
> > This was a bug in our disambiguation of constructor / non-constructor
> > declarations. Fixed in r190111, thanks.
> >
> >
> > Aaron Ballman <aaron at aaronballman.com> writes:
> >
> > > On Thu, Sep 5, 2013 at 11:49 AM, Guillaume Papin
> > > <guillaume.papin at epitech.eu> wrote:
> > >> Hi,
> > >>
> > >> While testing some code with attributes I found the following
> that looks
> > >> like a bug to me:
> > >>
> > >> $ clang-check /tmp/unused.cpp -- -std=c++11
> > >>
> > >> struct AB {
> > >> AB([[gnu::unused]] int i) {}
> > >> // ^~~~~~~~~~~~~~~ /tmp/unused.cpp:2:5: error: an attribute
> list
> > cannot appear here
> > >>
> > >> void f([[gnu::unused]] int i) {} // no error for this line
> > >> };
> > >>
> > >> Do constructors have different parameter-declaration-list than
> member
> > >> functions?
> > >
> > > They do not -- are you using ToT? I get no errors with your code
> on a
> > > relatively recent build.
> > >
> > > ~Aaron
> > >
> >
> >
> > --
> > Guillaume Papin
> >
> >
> >
> > _______________________________________________
> > cfe-dev mailing list
> > cfe-dev at cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
> >
> >
>
> --
> Guillaume Papin
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20130905/ac4d5751/attachment.html>
More information about the cfe-dev
mailing list