`#[rustc_default_body_unstable]` silently ignores `implied_by` and `soft`
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 119k
- Forks
- 16.1k
- PR merge metrics
- PR metrics pending
Description
#[rustc_default_body_unstable] is treated the same as #[unstable] by parse_unstability in rustc_attr, so it accepts the same flags. However, the stability annotator in rustc_passes doesn't collect implications from it and eval_default_body_stability in rustc_middle doesn't check feature-gate implications. Likewise, it accepts soft but default_body_is_unstable in rustc_hir_analysis ignores it.
I think I can fix this (I don't imagine it's high-priority) but I'd like to check first whether it's intentionally not handled. Currently I don't think anything in library/ or src/ uses or acknowledges #[rustc_default_body_unstable]/rustc_attr::DefaultBodyStability.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing parse_unstability in rustc_attr, the stability annotator in rustc_passes, eval_default_body_stability in rustc_middle, and default_body_is_unstable in rustc_hir_analysis. Check whether #[rustc_default_body_unstable] is intentionally different from #[unstable], then verify that the handling of implied_by and soft is consistent or that the intentional behavior is documented.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100