From: Richard Trieu Date: Thu, 6 Feb 2014 23:26:23 +0000 (+0000) Subject: Fixes PR18762, stop the StmtPrinter for ObjCPropertyRefExpr from crashing on X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0fe43fbee967539a2dce28caa94c8cefc7abab7c;p=clang Fixes PR18762, stop the StmtPrinter for ObjCPropertyRefExpr from crashing on certain receiver types. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@200953 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AST/StmtPrinter.cpp b/lib/AST/StmtPrinter.cpp index 6ece8af958..f008a12075 100644 --- a/lib/AST/StmtPrinter.cpp +++ b/lib/AST/StmtPrinter.cpp @@ -716,9 +716,11 @@ void StmtPrinter::VisitObjCIvarRefExpr(ObjCIvarRefExpr *Node) { void StmtPrinter::VisitObjCPropertyRefExpr(ObjCPropertyRefExpr *Node) { if (Node->isSuperReceiver()) OS << "super."; - else if (Node->getBase()) { + else if (Node->isObjectReceiver() && Node->getBase()) { PrintExpr(Node->getBase()); OS << "."; + } else if (Node->isClassReceiver() && Node->getClassReceiver()) { + OS << Node->getClassReceiver()->getName() << "."; } if (Node->isImplicitProperty()) diff --git a/test/Misc/ast-dump-decl.m b/test/Misc/ast-dump-decl.m index f8a5e5a263..539923b2e3 100644 --- a/test/Misc/ast-dump-decl.m +++ b/test/Misc/ast-dump-decl.m @@ -134,3 +134,12 @@ void TestBlockDecl(int x) { // CHECK-NEXT: ... // CHECK-NEXT: capture ParmVar{{.*}} 'x' 'int' // CHECK-NEXT: CompoundStmt + +@interface B ++ (int) foo; +@end + +void f() { + __typeof__(B.foo) Test; +} +// CHECK: VarDecl{{.*}}Test 'typeof (B.foo)':'int'