Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dyn* does not support trait upcasting #104800

Open
Tracked by #102425
compiler-errors opened this issue Nov 24, 2022 · 0 comments
Open
Tracked by #102425

dyn* does not support trait upcasting #104800

compiler-errors opened this issue Nov 24, 2022 · 0 comments
Labels
F-dyn_star `#![feature(dyn_star)]` T-types Relevant to the types team, which will review and decide on the PR/issue.

Comments

@compiler-errors
Copy link
Member

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:

https://github.com/rust-lang/rust/blob/d8cb8c37adfbfb641a1b30d3a2de3ba7226bb744/src/test/ui/dyn-star/no-unsize-coerce-dyn-trait.rs#L1-L13

That's why although dyn* trait upcasting was implemented in #101832, I removed it in #104594 due to introduced ICEs.

  1. We should decide first whether we actually want the burden of implementing dyn* upcasting first, since dyn* 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.
  2. If we decide that we do want dyn* upcasting, then it needs to be implemented separately from dyn Trait upcasting with a much narrower scope.
@compiler-errors compiler-errors added T-types Relevant to the types team, which will review and decide on the PR/issue. F-dyn_star `#![feature(dyn_star)]` labels Nov 24, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
F-dyn_star `#![feature(dyn_star)]` T-types Relevant to the types team, which will review and decide on the PR/issue.
Projects
None yet
Development

No branches or pull requests

1 participant