[PATCH] D119544: Deferred Concept Instantiation Implementation

Erich Keane via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Apr 20 12:27:28 PDT 2022


erichkeane added inline comments.


================
Comment at: clang/lib/Sema/TreeTransform.h:13002
+  ExprResult NewTrailingRequiresClause =
+      E->getCallOperator()->getTrailingRequiresClause();
 
----------------
erichkeane wrote:
> 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...
>Hrm.... i just discovered "RebuildExprInCurrentInstantiation". I wonder if all of these places should be doing THAT instead...

This does.... SOMETHING, just not the right thing :/  It DOES do some work it seems, but not enough to update everything?  I have no idea what is messed up here.

I'm pretty much out of ideas here.


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

https://reviews.llvm.org/D119544



More information about the cfe-commits mailing list