From: Eli Friedman Date: Thu, 13 Dec 2012 00:37:17 +0000 (+0000) Subject: Add missing check for error return from DefaultLvalueConversion. Fixes . git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170056 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaExprCXX.cpp b/lib/Sema/SemaExprCXX.cpp index 5345e8d8e9..e3df0a3275 100644 --- a/lib/Sema/SemaExprCXX.cpp +++ b/lib/Sema/SemaExprCXX.cpp @@ -2026,6 +2026,8 @@ Sema::ActOnCXXDelete(SourceLocation StartLoc, bool UseGlobal, if (!Ex.get()->isTypeDependent()) { // Perform lvalue-to-rvalue cast, if needed. Ex = DefaultLvalueConversion(Ex.take()); + if (Ex.isInvalid()) + return ExprError(); QualType Type = Ex.get()->getType(); diff --git a/test/SemaCXX/new-delete.cpp b/test/SemaCXX/new-delete.cpp index e77e3d652f..8b352954a3 100644 --- a/test/SemaCXX/new-delete.cpp +++ b/test/SemaCXX/new-delete.cpp @@ -499,3 +499,14 @@ namespace PR12061 { DeferredCookieTaskTest() {} }; } + +class DeletingPlaceholder { + int* f() { + delete f; // expected-error {{reference to non-static member function must be called; did you mean to call it with no arguments?}} + return 0; + } + int* g(int, int) { + delete g; // expected-error {{reference to non-static member function must be called}} + return 0; + } +};