erichkeane added inline comments.

================
Comment at: clang/lib/Sema/TreeTransform.h:13002
+  ExprResult NewTrailingRequiresClause =
+      E->getCallOperator()->getTrailingRequiresClause();
 
----------------
erichkeane wrote:
> cor3ntin wrote:
> > That doesn't look right.
> > At best if you don't transform the trailing return type you wouldn't refer 
> > to the transformed captures and that is the issue you are seeing with
> > 
> > ```
> > // This asserts because 'y' is not in the Scope's "FindInstantiationOf"
> > [y = x]() requires(constraint<decltype(y)>){}
> > ```
> > 
> > But i suspect this should explode even more spectacularly in some cases? 
> > If i understand correctly, it shouldn't be checked - but it still be 
> > substituted.... or am i missing something?
> > 
> >At best if you don't transform the trailing return type you wouldn't refer 
> >to the transformed captures and that is the issue you are seeing with
> 
> So the point of the patch here is that we cannot transform this until we need 
> to 'check' this constraint.  I also missed the 'call' of the lambdas in each 
> of those cases, so it does need to be 'checked', which means it needs to be 
> 'substituted'.
> 
> >But i suspect this should explode even more spectacularly in some cases? 
> >If i understand correctly, it shouldn't be checked - but it still be 
> >substituted.... or am i missing something?
> 
> I think it cannot be substituted either, because the type might be different 
> by the time you get to the need to check, see here: 
> https://godbolt.org/z/GxP9T6fa1
Hrm.... i just discovered "RebuildExprInCurrentInstantiation".  I wonder if all 
of these places should be doing THAT instead...


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

https://reviews.llvm.org/D119544

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

Reply via email to