[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