+    if (!AT->isSugared())
+      break;
+
+    Desugared = AT->desugar();

Please call AttributedType::getEquivalentType() rather than desugar(), and
don't call AT->isSugared() (it always returns true).


+  QualType origType = Type;
+  Type = S.Context.getAttributedType(TAK, origType, Type);
+  return false;

Should be "OrigType", but why not just pass Type in directly?

With those two tweaks, LGTM

On Wed, May 22, 2013 at 2:34 PM, Aaron Ballman <[email protected]>wrote:

> Here is the updated patch with your suggestions applied.
>
> Thanks!
>
> ~Aaron
>
> On Wed, May 22, 2013 at 4:45 PM, Aaron Ballman <[email protected]>
> wrote:
> > On Wed, May 22, 2013 at 4:39 PM, Richard Smith <[email protected]>
> wrote:
> >> On Wed, May 22, 2013 at 1:34 PM, Aaron Ballman <[email protected]>
> >> wrote:
> >>>
> >>> On Wed, May 22, 2013 at 3:59 PM, Richard Smith <[email protected]>
> >>> wrote:
> >>> > +  // Pointer type qualifiers can only operate on pointer types, but
> not
> >>> > +  // pointer-to-member types.
> >>> > +  if (!Type->isPointerType() || Type->isMemberPointerType()) {
> >>> >
> >>> > You don't need the isMemberPointerType here.
> >>>
> >>> Removed.
> >>>
> >>> > This will still accept cases like:
> >>> >
> >>> > typedef int *P;
> >>> > P __ptr32 myp;
> >>> >
> >>> > I would suggest checking isa<PointerType> on the type you get after
> >>> > stripping off AttributedTypes.
> >>>
> >>> I had an explicit test case in to ensure that worked because I felt it
> >>> was a reasonable use case.  Are you saying we should not allow it?
> >>
> >>
> >> You said this was illegal in MSVC, so I don't see why we should allow
> it.
> >
> > MSVC isn't particularly consistent with what it allows and disallows.
> > ;-)  But I'll remove it just the same.
> >
> > Thanks!
> >
> > ~Aaron
>
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to