rsmith added inline comments.

================
Comment at: lib/Parse/ParseExprCXX.cpp:638
 ///         lambda-introducer lambda-declarator[opt] compound-statement
+///         lambda-introducer <template-parameter-list> lambda-declarator[opt]
+///             compound-statement
----------------
We generally put terminals in single quotes in these grammar excerpts:
```
  lambda-introducer '<' template-parameter-list '>' lambda-declarator[opt]
```


================
Comment at: lib/Parse/ParseExprCXX.cpp:1126-1127
+           diag::err_lambda_template_parameter_list_empty);
+    }
+    else {
+      Actions.ActOnLambdaExplicitTemplateParameterList(
----------------
No linebreak between `}` and `else`.


================
Comment at: lib/Sema/SemaLambda.cpp:495
+      reinterpret_cast<NamedDecl *const *>(TParams.begin()),
+      reinterpret_cast<NamedDecl *const *>(TParams.end()));
+  LSI->NumExplicitTemplateParams = TParams.size();
----------------
hamzasood wrote:
> faisalv wrote:
> > ack - avoid reinterpret cast please - why not just stick to Decl* for 
> > TemplateParams for now  - and add some fixme's that suggest we should 
> > consider refactoring ParseTemplateParameterList to accept a vector of 
> > nameddecls - and update this when that gets updated ?
> > 
> > Perhaps add an assert here that iterates through and checks to make sure 
> > each item in this list is some form of a template parameter decl - within 
> > an #ifndef NDEBUG block (or your conversion check to NameDecl should 
> > suffice?)
> Unfortunately `TemplateParameterList::Create` expects an array of 
> `NamedDecl`, so there’ll need to be a forced downcast somewhere. By getting 
> that over with as soon as possible, any errors will be caught straight away 
> by that assertion instead of moving the problem down the line somewhere and 
> making it more difficult to see where it went wrong.
OK, but please cast them one by one rather than type-punning the array (which 
results in UB).


================
Comment at: lib/Sema/SemaLambda.cpp:845-846
+                                       ->getTemplateParamParent() != nullptr;
+  }
+  else {
+    KnownDependent = CurScope->getTemplateParamParent() != nullptr;
----------------
No linebreak between `}` and `else`.


================
Comment at: test/CXX/temp/temp.decls/temp.variadic/p4.cpp:216
 
+#if __cplusplus >= 201707L
       //    - in a template parameter pack that is a pack expansion
----------------
Please use `__cplusplus > 201703L` rather than a number that will become 
meaningless once we have a real value for C++2a.


https://reviews.llvm.org/D36527



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to