================
@@ -264,6 +338,15 @@ void RemarkEngine::reportImpl(const Remark &remark) {
}
void RemarkEngine::report(const Remark &&remark) {
----------------
grypp wrote:
Thanks for catching this. It required some thinking. Let's compare two scenarios
**case-1**
```
r1 = remark::missed(loc, ...)
auto q = remark::RemarkQuery() ... // can this return r1 somehow?
r3 = remark::missed(loc, opts) << remark::relatedTo(q);
r2 = remark::missed(loc, ...) // same loc, final policy removes r1
```
**case-2**
```
r1 = remark::missed(loc, ...)
r2 = remark::missed(loc, ...) // same loc, final policy removes r1
auto q = remark::RemarkQuery() ... // can this return r1 somehow?
r3 = remark::missed(loc, opts) << remark::relatedTo(q);
```
case-2 works fine.
case-1 required some work. Final policy now removes relationship between `r3->r1` when r1 is removed by r2.
https://github.com/llvm/llvm-project/pull/237762