rsmith added inline comments.

================
Comment at: cfe/trunk/lib/Sema/TreeTransform.h:7173
+    auto *MD = dyn_cast_or_null<CXXMethodDecl>(FD);
+    if (!MD || !MD->getParent()->isGenericLambda()) {
+      assert(!Promise->getType()->isDependentType() &&
----------------
This assert doesn't seem correct to me; there's no reason to assume we have a 
generic lambda here. (A non-generic lambda inside a generic lambda, whose 
parameter types are dependent on the generic lambda's parameters, would hit 
exactly the same issue, for instance.)

Generally we should write the template instantiation code so it could be used 
to substitute into the definition of a function template to produce another 
function template, even if we happen to never call it that way right now 
(though deduction guide processing gets pretty close). The right thing to do 
here is to either substitute into the representation we already formed 
(building a dependent representation if it's still dependent and a 
non-dependent representation otherwise) or to rebuild the coroutine body from 
scratch (again, creating a dependent representation if the result is still 
dependent).


Repository:
  rL LLVM

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

https://reviews.llvm.org/D62550



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

Reply via email to