Sirraide wrote:

> I am not sure i understand that.
>
> Imo the issue is that `DiagnoseUnexpandedParameterPacks` (where we set 
> `LambdaScopeInfo::ContainsUnexpandedParameterPack` does not account for 
> blocks - and probably should.
> 
> Ideally
> 
> * DiagnoseUnexpandedParameterPacks would handle arbitrary capturing-scope 
> thingies (statement expressions, lambdas, blocks, eventually do expressions, 
> and other terrifying such constructs)
> * Once the innermost such construct is fully constructed, the 
> `ContainsUnexpandedParameterPack` flag could bubble upward to the enclosing 
> capturing scope

Yeah, that’s also what I figured initially. I just assumed that there was 
*some* reason why blocks don’t or can’t work that way (I have never used 
Objective-C and I candidly don’t know a lot about blocks...), but it seems that 
there isn’t.

So if you think that this is a better idea, I can instead look into refactoring 
blocks to work the same way as lambdas wrt `DiagnoseUnexpandedParameterPacks()` 
(and I think that mainly just means moving some things from `LambdaScopeInfo` 
to `CapturingScopeInfo` or whatever the base class was called again and making 
`DiagnoseUnexpandedParameterPacks()` etc. use that instead).

https://github.com/llvm/llvm-project/pull/110762
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to