r176731 - <rdar://problem/13170740> Be a little more careful when instantiating 'this' expressions.

Douglas Gregor dgregor at apple.com
Fri Mar 8 14:43:49 PST 2013


Author: dgregor
Date: Fri Mar  8 16:43:48 2013
New Revision: 176731

URL: http://llvm.org/viewvc/llvm-project?rev=176731&view=rev
Log:
<rdar://problem/13170740> Be a little more careful when instantiating 'this' expressions.

Modified:
    cfe/trunk/lib/Sema/TreeTransform.h

Modified: cfe/trunk/lib/Sema/TreeTransform.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/TreeTransform.h?rev=176731&r1=176730&r2=176731&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/TreeTransform.h (original)
+++ cfe/trunk/lib/Sema/TreeTransform.h Fri Mar  8 16:43:48 2013
@@ -7167,9 +7167,14 @@ TreeTransform<Derived>::TransformCXXThis
   QualType T;
   if (CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(DC))
     T = MD->getThisType(getSema().Context);
-  else
+  else if (CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(DC)) {
     T = getSema().Context.getPointerType(
-      getSema().Context.getRecordType(cast<CXXRecordDecl>(DC)));
+          getSema().Context.getRecordType(Record));
+  } else {
+    assert(SemaRef.Context.getDiagnostics().hasErrorOccurred() &&
+           "this in the wrong scope?");
+    return ExprError();
+  }
 
   if (!getDerived().AlwaysRebuild() && T == E->getType()) {
     // Make sure that we capture 'this'.





More information about the cfe-commits mailing list