]> granicus.if.org Git - clang/commitdiff
Revert 103247, it causes lots of test failures.
authorSebastian Redl <sebastian.redl@getdesigned.at>
Fri, 7 May 2010 09:09:23 +0000 (09:09 +0000)
committerSebastian Redl <sebastian.redl@getdesigned.at>
Fri, 7 May 2010 09:09:23 +0000 (09:09 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103248 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/DeclPrinter.cpp
lib/Sema/SemaExpr.cpp

index 539492479707c9ebeeb9bdccde27d0cf5680d09c..609d64cc7e79068cbd3590fd1d47a2accfa187dd 100644 (file)
@@ -214,7 +214,11 @@ void DeclPrinter::VisitDeclContext(DeclContext *DC, bool Indent) {
     if (PrintAccess) {
       AccessSpecifier AS = D->getAccess();
 
-      if (AS != CurAS) {
+      // This is a hack: when a struct is declared in a member declaration
+      // struct outer { struct inner *ptr; }; then we encounter the struct
+      // decl, but it has no access specifier.
+      // The correct solution is to merge this with the member.
+      if (AS != CurAS && AS != AS_none) {
         if (Indent)
           this->Indent(Indentation - Policy.Indentation);
         Print(AS);
index 56288eaa46c215ed7c20d46c66dde0352ffed48f..3ac4d133fe33917c7b63d624280c03da56d16ee4 100644 (file)
@@ -2670,7 +2670,7 @@ Sema::BuildMemberReferenceExpr(ExprArg BaseArg, QualType BaseType,
       return move(Result);
   }
 
-  return BuildMemberReferenceExpr(ExprArg(*this, Base), Base->getType(),
+  return BuildMemberReferenceExpr(ExprArg(*this, Base), BaseType,
                                   OpLoc, IsArrow, SS, FirstQualifierInScope,
                                   R, TemplateArgs);
 }