r209511 - PR19352 - getLocation() points to the wrong position for FriendDecls
Abramo Bagnara
abramo.bagnara at bugseng.com
Sat Sep 6 03:26:46 PDT 2014
Ping
Il 02/09/2014 06:57, Nikola Smiljanic ha scritto:
> Changing getLocStart to getLocEnd would indeed fix the first issue, are
> you OK with this Richard?
>
> As for the second example, this type of declaration appears unsupported
> (not sure what this exactly means), but I wouldn't be surprised if ast
> is incomplete because of this. Namely NumTPLists is 0 when FriendDecl is
> coming from the instantiation. This is from getSourceRange:
>
> else if (TypeSourceInfo *TInfo = getFriendType()) {
> SourceLocation StartL = (NumTPLists == 0)
> ? getFriendLoc()
> : getTPLists()[0]->getTemplateLoc();
> return SourceRange(StartL, TInfo->getTypeLoc().getEndLoc())
>
> On Sat, Aug 30, 2014 at 4:43 PM, Abramo Bagnara
> <abramo.bagnara at bugseng.com <mailto:abramo.bagnara at bugseng.com>> wrote:
>
> Il 30/08/2014 03:02, Nikola Smiljanic ha scritto:
> > > This seems wrong to me.
> > >
> > > Did you mean to write getLocEnd() instead? (Under the
> assumption that
> > > identifier should comes last in class type)
> >
> >
> > This was done so that 'friend struct A' and 'friend A' (C++11) have
> > different location since former is also a forward declaration.
> Does that
> > make sense or have I misunderstood your question?
>
> AFAIK this is not correct: getLocation() should always return the
> location of identifier token.
>
> >
> > It is useful to know that currently for:
> >
> > template <class U> class C {
> > template<class T> friend struct A<T>::B;
> > };
> >
> >
> > Not really sure what A is supposed to be here but this code is
> > ill-formed: explicit specialization of non-template struct 'A'
>
> This was only the part containing shown location, full code is
>
> template <class T> struct A
> {
> struct B { };
> };
>
> template <class U> class C {
> template <class T> friend struct A<T>::B;
> };
>
>
> --
> Abramo Bagnara
>
> BUGSENG srl - http://bugseng.com
> mailto:abramo.bagnara at bugseng.com <mailto:abramo.bagnara at bugseng.com>
>
>
--
Abramo Bagnara
BUGSENG srl - http://bugseng.com
mailto:abramo.bagnara at bugseng.com
More information about the cfe-commits
mailing list