[cfe-dev] Fixing MemberPointerTypeLoc.

Douglas Gregor dgregor at apple.com
Fri Mar 4 07:20:02 PST 2011


On Mar 4, 2011, at 2:24 AM, Enea Zaffanella wrote:

> Hello.
> 
> We would like to get rid of the FIXME in MemberPointerTypeLoc so as to
> provide appropriate NNSLoc info. As an example of the current problem,
> code such as the following:
> 
> int S<int[2+3]>::* ptr = 0;
> 
> gets printed as follows (note that the array size is computed):
> 
> int S<int [5]>::*ptr = 0;
> 
> The situation seems to be much like that of ElaboratedTypeLoc, except
> for the fact that in ElaboratedType we do have an NestedNameSpecifier,
> while in MemberPointerType we have instead
> 
>  /// The class of which the pointee is a member. Must ultimately be a
>  /// RecordType, but could be a typedef or a template parameter too.
>  const Type *Class;
> 
> 
> So, what would be the best way to proceed?
> 
> Can we _add_ a NNS* to MemberPointerType?
> 
> Should we _replace_ the Type* with the NNS* and have the method
> getClass() recompute the class type on the fly?

I think this is the best option, since it allows us to represent the source accurately without making MemberPointerType larger. Thanks for working on this!

	- Doug



More information about the cfe-dev mailing list