From f53d1727107ed84a1153b7db193cfb9c18c5e2a9 Mon Sep 17 00:00:00 2001 From: Nicolas Lesser Date: Sun, 19 May 2019 15:07:58 +0000 Subject: Added a better diagnostic when using the delete operator with lambdas Summary: This adds a new error for missing parentheses around lambdas in delete operators. ``` int main() { delete []() { return new int(); }(); } ``` This will result in: ``` test.cpp:2:3: error: '[]' after delete interpreted as 'delete[]' delete []() { return new int(); }(); ^~~~~~~~~ test.cpp:2:9: note: add parentheses around the lambda delete []() { return new int(); }(); ^ ( ) ``` Reviewers: rsmith Reviewed By: rsmith Subscribers: riccibruno, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D36357 llvm-svn: 361119 --- clang/test/FixIt/fixit-cxx0x.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'clang/test/FixIt/fixit-cxx0x.cpp') diff --git a/clang/test/FixIt/fixit-cxx0x.cpp b/clang/test/FixIt/fixit-cxx0x.cpp index 337b5d62bed..70342075a15 100644 --- a/clang/test/FixIt/fixit-cxx0x.cpp +++ b/clang/test/FixIt/fixit-cxx0x.cpp @@ -58,6 +58,9 @@ void S2::f(int i) { (void)[&, i, i]{ }; // expected-error{{'i' can appear only once in a capture list}} (void)[] mutable { }; // expected-error{{lambda requires '()' before 'mutable'}} (void)[] -> int { }; // expected-error{{lambda requires '()' before return type}} + + delete []() { return new int; }(); // expected-error{{'[]' after delete interpreted as 'delete[]'}} + delete [] { return new int; }(); // expected-error{{'[]' after delete interpreted as 'delete[]'}} } #define bar "bar" -- cgit v1.2.3