-
Notifications
You must be signed in to change notification settings - Fork 13.4k
Tracking issue for future-incompatibility lint deref_into_dyn_supertrait
#89460
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Comments
…matsakis Add `deref_into_dyn_supertrait` lint. Initial implementation of rust-lang#89460. Resolves rust-lang#89190. Maybe also worth a beta backport if necessary. r? `@nikomatsakis`
Could we get a more detailed summary of the case this lint is addressing? dyn upcasting / coercion seems to have made a lot of progress, but this aspect of it doesn't seem to have gotten much discussion that I recall. |
@joshtriplett Sure. It is known that from user's perspective, coercions has "priorities", and dyn upcasting coercion has a higher priority than user defined For now we don't want to affect user's code, since dyn upcasting coercion might take a little while before it's stablized. Though, if user provided code decide to do other things in the |
I'm curious -- why wasn't this implemented as a lint on the |
@compiler-errors It could be implemented that way, and thinking about it from current view, that would be a better way (No removal of the lint is needed with that approach) |
…, r=compiler-errors Make `deref_into_dyn_supertrait` lint the impl and not the usage Proposed by `@compiler-errors` in rust-lang#89460 (comment) r? `@crlf0710`
…, r=compiler-errors Make `deref_into_dyn_supertrait` lint the impl and not the usage Proposed by ``@compiler-errors`` in rust-lang#89460 (comment) r? ``@crlf0710``
…ler-errors Make `deref_into_dyn_supertrait` lint the impl and not the usage Proposed by ``@compiler-errors`` in rust-lang/rust#89460 (comment) r? ``@crlf0710``
For future reference: the lint change suggested by @compiler-errors was implemented in #104742 (I just tried to do that again because I forgor). The lint now lints against |
…ions, r=lcnr Don't consider regions in `deref_into_dyn_supertrait` lint I actually wonder if we should just warn on *any* deref impl with a target type that matches a supertrait by *def-id*. cc rust-lang#89460 r? types
Rollup merge of rust-lang#118026 - compiler-errors:deref-into-dyn-regions, r=lcnr Don't consider regions in `deref_into_dyn_supertrait` lint I actually wonder if we should just warn on *any* deref impl with a target type that matches a supertrait by *def-id*. cc rust-lang#89460 r? types
deref_into_dyn_supertrait
compatibility lintderef_into_dyn_supertrait
…treat, r=compiler-errors Stabilize `feature(trait_upcasting)` This feature was "done" for a while now, I think it's finally time to stabilize it! Stabilization report: rust-lang#134367 (comment). cc reference PR: rust-lang/reference#1622. Closes rust-lang#65991 (tracking issue), closes rust-lang#89460 (the lint is no longer future incompat). r? compiler-errors
Rollup merge of rust-lang#134367 - WaffleLapkin:trait_upcasting_as_a_treat, r=compiler-errors Stabilize `feature(trait_upcasting)` This feature was "done" for a while now, I think it's finally time to stabilize it! Stabilization report: rust-lang#134367 (comment). cc reference PR: rust-lang/reference#1622. Closes rust-lang#65991 (tracking issue), closes rust-lang#89460 (the lint is no longer future incompat). r? compiler-errors
…treat, r=compiler-errors Stabilize `feature(trait_upcasting)` This feature was "done" for a while now, I think it's finally time to stabilize it! Stabilization report: rust-lang#134367 (comment). cc reference PR: rust-lang/reference#1622. Closes rust-lang#65991 (tracking issue), closes rust-lang#89460 (the lint is no longer future incompat). r? compiler-errors
Uh oh!
There was an error while loading. Please reload this page.
What is this lint about
We're planning to add the dyn upcasting coercion language feature (see https://github.com/rust-lang/dyn-upcasting-coercion-initiative). Unfortunately this new coercion rule will take priority over certain other coercion rules, which will mean some behavior change. See #89190 for initial bug report.
How to fix this warning/error
Ensure your own
Deref
implementation is consistent with thetrait_upcasting
feature brings andallow
this lint. Or avoid this code pattern altogether.Current status
Implementation: #89461
The text was updated successfully, but these errors were encountered: