On Fri, Mar 8, 2013 at 2:43 PM, Douglas Gregor <[email protected]> wrote: > 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.
Test case? > > 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'. > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
