The following program:
record Inner {
}
record Outer {
forwarding var inner: Inner;
}
proc foo(x) {
x.foo(1);
compilerWarning("lol lmao", 0);
}
proc ctx1() {
proc Inner.foo(x) do compilerWarning("inner foo called");
(new Outer()).foo(1);
foo(new Outer());
}
ctx1();
Creates an assertion error:
at resolution-queries.cpp:3455:7
3452 auto& m = rv->poiTraceToChild;
3453 auto p = std::make_pair(poiTrace, std::move(x));
3454 auto check = m.insert(std::move(p));
-> 3455 CHPL_ASSERT(check.second);
3456 return check.first->second;
This discovery was incidental while trying to figure out other POI-related troubles, so I haven't had the chance to investigate further.