[clang] Fix crash and improve diagnostics for void lambda returns (PR #188904)
Shafik Yaghmour via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 15 19:56:49 PDT 2026
================
@@ -0,0 +1,25 @@
+// RUN: %clang_cc1 -std=c++20 -fblocks -fsyntax-only -verify %s
+
+void test_lambdas() {
+ (void) [] () -> void { return {}; }; // expected-error {{void lambda should not return a value}}
+ (void) [] () -> void { return {1}; }; // expected-error {{void lambda should not return a value}}
+ (void) [] () -> void { return {1, 2}; }; // expected-error {{void lambda should not return a value}}
+ (void) [] () -> void { return 42; }; // expected-error {{void lambda should not return a value}}
+ (void) [] () -> void { return double(32); }; // expected-error {{void lambda should not return a value}}
----------------
shafik wrote:
I think these two cases are worth adding
```cpp
(void) [] () -> void { return ({}); };
(void) [] () -> void { return void{}; };
```
https://github.com/llvm/llvm-project/pull/188904
More information about the cfe-commits
mailing list