[PATCH] D140614: [C++20] Mark lambdas in lambda specifiers as dependent if necessary

Liming Liu via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Dec 26 02:36:37 PST 2022


lime updated this revision to Diff 485276.
lime retitled this revision from "[C++20] Check the dependency of declaration contexts before pumping diagnostics" to "[C++20] Mark lambdas in lambda specifiers as dependent if necessary".
lime edited the summary of this revision.

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D140614/new/

https://reviews.llvm.org/D140614

Files:
  clang/lib/Parse/ParseExprCXX.cpp
  clang/test/SemaCXX/lambda-unevaluated.cpp


Index: clang/test/SemaCXX/lambda-unevaluated.cpp
===================================================================
--- clang/test/SemaCXX/lambda-unevaluated.cpp
+++ clang/test/SemaCXX/lambda-unevaluated.cpp
@@ -122,6 +122,22 @@
 static_assert(!__is_same(decltype(foo<int>), void));
 } // namespace GH51641
 
+namespace GH57155 {
+auto foo(int t) {
+  int(*f)(int) = [](auto t) -> decltype([=] { return t; } ()) { return t; };
+  return f;
+}
+} // namespace GH57155
+
+namespace GH57170 {
+int(*f)(int) = [](auto t) -> decltype([] {
+    return 0;
+  } ()
+){
+  return t;
+};
+} // namespace GH57170
+
 namespace StaticLambdas {
 template <auto> struct Nothing {};
 Nothing<[]() static { return 0; }()> nothing;
Index: clang/lib/Parse/ParseExprCXX.cpp
===================================================================
--- clang/lib/Parse/ParseExprCXX.cpp
+++ clang/lib/Parse/ParseExprCXX.cpp
@@ -1477,6 +1477,9 @@
 
     T.consumeClose();
 
+    MultiParseScope ScopeForGenericLambda(*this);
+    if (Actions.getCurGenericLambda())
+      ScopeForGenericLambda.Enter(Scope::TemplateParamScope);
     // Parse lambda-specifiers.
     ParseLambdaSpecifiers(LParenLoc, /*DeclEndLoc=*/T.getCloseLocation(),
                           ParamInfo, EllipsisLoc);


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D140614.485276.patch
Type: text/x-patch
Size: 1260 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20221226/a161e9ac/attachment.bin>


More information about the cfe-commits mailing list