Open
Description
Currently trait upcasting is done via the Unsize
/CoerceUnsized
traits -- however, since CoerceUnsized
works structurally, implementing dyn*
upcasting via the same codepaths allows this erroneous code to make it to codegen and ICE:
That's why although dyn*
trait upcasting was implemented in #101832, I removed it in #104594 due to introduced ICEs.
- We should decide first whether we actually want the burden of implementing
dyn*
upcasting first, sincedyn*
is not currently intended to be user-facing syntax. Due to this, the feature is not currently needed even if it is interesting and possible theoretically. - If we decide that we do want
dyn*
upcasting, then it needs to be implemented separately fromdyn Trait
upcasting with a much narrower scope.