r300529 - Assert that a valid operator new/delete signature is always found by the coroutine body

Eric Fiselier via cfe-commits cfe-commits at lists.llvm.org
Mon Apr 17 22:30:40 PDT 2017


Author: ericwf
Date: Tue Apr 18 00:30:39 2017
New Revision: 300529

URL: http://llvm.org/viewvc/llvm-project?rev=300529&view=rev
Log:
Assert that a valid operator new/delete signature is always found by the coroutine body

Modified:
    cfe/trunk/lib/Sema/SemaCoroutine.cpp

Modified: cfe/trunk/lib/Sema/SemaCoroutine.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaCoroutine.cpp?rev=300529&r1=300528&r2=300529&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaCoroutine.cpp (original)
+++ cfe/trunk/lib/Sema/SemaCoroutine.cpp Tue Apr 18 00:30:39 2017
@@ -912,7 +912,9 @@ bool CoroutineStmtBuilder::makeNewAndDel
                               OperatorNew, UnusedResult);
   }
 
-  if (OperatorNew && RequiresNoThrowAlloc) {
+  assert(OperatorNew && "expected definition of operator new to be found");
+
+  if (RequiresNoThrowAlloc) {
     const auto *FT = OperatorNew->getType()->getAs<FunctionProtoType>();
     if (!FT->isNothrow(S.Context, /*ResultIfDependent*/ false)) {
       S.Diag(OperatorNew->getLocation(),
@@ -924,9 +926,6 @@ bool CoroutineStmtBuilder::makeNewAndDel
     }
   }
 
-  // FIXME: Diagnose and handle the case where no matching operator new is found
-  //  (ie OperatorNew == nullptr)
-
   if ((OperatorDelete = findDeleteForPromise(S, Loc, PromiseType)) == nullptr)
     return false;
 




More information about the cfe-commits mailing list