[PATCH] Fix parsing comma in default arguments.
Olivier Goffart
ogoffart at kde.org
Wed Jun 19 02:46:14 PDT 2013
On Thursday 13 June 2013 17:05:04 Richard Smith wrote:
> On Thu, Jun 13, 2013 at 4:17 PM, Olivier Goffart <ogoffart at kde.org> wrote:
> > On Thursday 13 June 2013 13:52:47 Richard Smith wrote:
> >> That's not really acceptable, if it can lead to rejecting valid code
> >> that we accept now (such as your next example).
> >
> > Ok, the new attached patch fixes that issue.
> >
> > I'm now quite happy which what (i think) we cover.
> > It even report good errors when one miss a default argument (on the right
> > line)
> >
> > What is still not working is this:
> >
> > template <int, int =0> struct p { const static int w = 0; };
> > struct T {
> >
> > int i = p<0, p<a<b>::w >::w, p<0>::*j;
> > static const int a = 1, b = 2;
> >
> > };
> >
> > because a and b are declare after, and the TryAnnotateCXXScopeToken will
> > display error as a and b are not defined yet.
> >
> > But clang did not accept this code before. And gcc also seems to have a
> > bug there.
>
> Right, you can't use TryParseDeclarator during this disambiguation,
> because it assumes that it can perform name lookup. You'll need to
> skip declarators manually (or at least the scope specifiers within
> them).
>
> Thank you for working on this!
I don't intend to do that.
That's more work than I am willing to put there.
This will only be a problem in some corner cases that were not working before
the patche, and that is also not accepted by gcc.
--
Olivier
More information about the cfe-commits
mailing list