[PATCH] D123909: [Clang] Use of decltype(capture) in parameter-declaration-clause

Aaron Ballman via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Apr 18 04:36:53 PDT 2022

aaron.ballman added inline comments.

Comment at: clang/include/clang/Sema/Sema.h:5281
+                                              SourceLocation TemplateKwLoc,
+                                              bool HasTrailingLParen);
This parameter is always false, so it seems like it can be dropped.

Comment at: clang/lib/Parse/ParseExprCXX.cpp:688-694
+/// ParseCXXMaybeMutableAgnosticExpression - Handle Expressions inside of
+/// sizeof, decltype, noexcepr
+/// - unqualified-id
+/// - expression
+/// This serves to silence errors about captured variable refered in lambda
+/// parameter list, if they aree used as the unqualified-id of a decltype,
+/// sizeof, or noexcept expression

Comment at: clang/lib/Parse/ParseExprCXX.cpp:700
+  if (Tok.is(tok::identifier) && NextToken().is(tok::r_paren)) {
+    SourceLocation TemplateKWLoc;
This feels surprisingly restrictive to me, but it's sufficient for getting libstdc++ working again.

Comment at: clang/lib/Parse/ParseExprCXX.cpp:713-715
+    }
+  }
+  return ParseExpression();
In the case we get an error from parsing the unqualified id, I don't think we want to immediately try to parse an expression, right? Seems like a case to return an `ExprError`

  rG LLVM Github Monorepo



More information about the cfe-commits mailing list