[clang] [RFC] Initial implementation of P2719 (PR #113510)
Oliver Hunt via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 9 13:30:03 PDT 2025
================
@@ -16421,33 +16715,70 @@ CheckOperatorDeleteDeclaration(Sema &SemaRef, FunctionDecl *FnDecl) {
return true;
auto *MD = dyn_cast<CXXMethodDecl>(FnDecl);
+ auto ConstructDestroyingDeleteAddressType = [&]() {
+ assert(MD);
+ return SemaRef.Context.getCanonicalType(SemaRef.Context.getPointerType(
+ SemaRef.Context.getRecordType(MD->getParent())));
+ };
+
+ // C++ P2719: A destroying operator delete cannot be type aware
+ // so for QoL we actually check for this explicitly by considering
+ // an destroying-delete appropriate address type and the presence of
+ // any parameter of type destroying_delete_t as an erroneous attempt
+ // to declare a type aware destroying delete, rather than emitting a
+ // pile of incorrect parameter type errors.
+ if (MD && IsPotentiallyTypeAwareOperatorNewOrDelete(
+ SemaRef, MD, /*WasMalformed=*/nullptr)) {
+ QualType AddressParamType =
+ SemaRef.Context.getCanonicalType(MD->getParamDecl(1)->getType());
+ if (AddressParamType != SemaRef.Context.VoidPtrTy &&
----------------
ojhunt wrote:
what would I be asserting?
https://github.com/llvm/llvm-project/pull/113510
More information about the cfe-commits
mailing list