Closed
Description
Concrete class discovery when finalizing virtual stubs still has an ordering issue on cross dependencies (as it seems, we recently fixed chained dependencies), leading to some overloads to be missed in certain cases, in turn running into an assertion when the virtual stub is called. One situation I have seen looks roughly like the following (probably not 100% accurate), but only runs into issues depending on compilation and finalization order:
class Base {
abstract foo();
abstract bar();
}
class A extends Base {
foo() { new B().foo(); }
bar() { ... }
}
class B extends Base {
foo() { new A().bar(); }
bar() { ... }
}
// somewhere deep:
someBase.foo(); // ?
A potential fix could be to add a separate discovery phase before finalizing.
cc @Scutterman