Skip to content

Remove unnecessary #![feature(min_specialization)] #120866

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

Merged
merged 1 commit into from
Feb 10, 2024

Conversation

Zalathar
Copy link
Contributor

As of #119963 and #120676, we can now rely on newtype_index! having #[allow_internal_unstable(min_specialization)], so there are a few compiler crates that no longer need to include min-spec in their own crate features.


Some of the expansions of newtype_index! still appear to require min-spec in the crate features. I think this is because #[orderable] causes the expansion to include an implementation of TrustedStep, which is flagged with #[rustc_specialization_trait], and for whatever reason that isn't permitted by allow-internal-unstable. So this PR only touches the crates where that isn't the case.

@rustbot
Copy link
Collaborator

rustbot commented Feb 10, 2024

r? @TaKO8Ki

rustbot has assigned @TaKO8Ki.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Feb 10, 2024
@Zalathar
Copy link
Contributor Author

cc @clubby789

Looks like newtype_index! still requires crate-wide min_specialization in some cases, in order for the macro to implement TrustedStep as part of #[orderable].

@compiler-errors
Copy link
Member

r? compiler-errors @bors r+ rollup

@bors
Copy link
Collaborator

bors commented Feb 10, 2024

📌 Commit cf1096e has been approved by compiler-errors

It is now in the queue for this repository.

@rustbot rustbot assigned compiler-errors and unassigned TaKO8Ki Feb 10, 2024
@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Feb 10, 2024
@Zalathar
Copy link
Contributor Author

I've filed #120870 to address the remaining cases.

matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Feb 10, 2024
…rrors

Remove unnecessary `#![feature(min_specialization)]`

As of rust-lang#119963 and rust-lang#120676, we can now rely on `newtype_index!` having `#[allow_internal_unstable(min_specialization)]`, so there are a few compiler crates that no longer need to include min-spec in their own crate features.

---

Some of the expansions of `newtype_index!` still appear to require min-spec in the crate features. I think this is because `#[orderable]` causes the expansion to include an implementation of `TrustedStep`, which is flagged with `#[rustc_specialization_trait]`, and for whatever reason that isn't permitted by allow-internal-unstable. So this PR only touches the crates where that isn't the case.
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Feb 10, 2024
Allow restricted trait impls under `#[allow_internal_unstable(min_specialization)]`

This is a follow-up to rust-lang#119963 and a companion to rust-lang#120866, though it can land independently from the latter.

---

We have several compiler crates that only enable `#[feature(min_specialization)]` because it is required by their expansions of `newtype_index!`, in order to implement traits marked with `#[rustc_specialization_trait]`.

This PR allows those traits to be implemented internally by macros with `#[allow_internal_unstable(min_specialization)]`, without needing specialization to be enabled in the enclosing crate.
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Feb 10, 2024
…rrors

Remove unnecessary `#![feature(min_specialization)]`

As of rust-lang#119963 and rust-lang#120676, we can now rely on `newtype_index!` having `#[allow_internal_unstable(min_specialization)]`, so there are a few compiler crates that no longer need to include min-spec in their own crate features.

---

Some of the expansions of `newtype_index!` still appear to require min-spec in the crate features. I think this is because `#[orderable]` causes the expansion to include an implementation of `TrustedStep`, which is flagged with `#[rustc_specialization_trait]`, and for whatever reason that isn't permitted by allow-internal-unstable. So this PR only touches the crates where that isn't the case.
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Feb 10, 2024
Allow restricted trait impls under `#[allow_internal_unstable(min_specialization)]`

This is a follow-up to rust-lang#119963 and a companion to rust-lang#120866, though it can land independently from the latter.

---

We have several compiler crates that only enable `#[feature(min_specialization)]` because it is required by their expansions of `newtype_index!`, in order to implement traits marked with `#[rustc_specialization_trait]`.

This PR allows those traits to be implemented internally by macros with `#[allow_internal_unstable(min_specialization)]`, without needing specialization to be enabled in the enclosing crate.
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 10, 2024
…iaskrgr

Rollup of 8 pull requests

Successful merges:

 - rust-lang#117614 (static mut: allow mutable reference to arbitrary types, not just slices and arrays)
 - rust-lang#120588 (wasm: Store rlib metadata in wasm object files)
 - rust-lang#120719 (Remove support for `associated_type_bound` nested in `dyn` types)
 - rust-lang#120823 (Clarify that atomic and regular integers can differ in alignment)
 - rust-lang#120859 (Loosen an assertion to account for stashed errors.)
 - rust-lang#120865 (Turn the "no saved object file in work product" ICE into a translatable fatal error)
 - rust-lang#120866 (Remove unnecessary `#![feature(min_specialization)]`)
 - rust-lang#120870 (Allow restricted trait impls under `#[allow_internal_unstable(min_specialization)]`)

r? `@ghost`
`@rustbot` modify labels: rollup
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Feb 10, 2024
Allow restricted trait impls under `#[allow_internal_unstable(min_specialization)]`

This is a follow-up to rust-lang#119963 and a companion to rust-lang#120866, though it can land independently from the latter.

---

We have several compiler crates that only enable `#[feature(min_specialization)]` because it is required by their expansions of `newtype_index!`, in order to implement traits marked with `#[rustc_specialization_trait]`.

This PR allows those traits to be implemented internally by macros with `#[allow_internal_unstable(min_specialization)]`, without needing specialization to be enabled in the enclosing crate.
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 10, 2024
…iaskrgr

Rollup of 8 pull requests

Successful merges:

 - rust-lang#117614 (static mut: allow mutable reference to arbitrary types, not just slices and arrays)
 - rust-lang#120719 (Remove support for `associated_type_bound` nested in `dyn` types)
 - rust-lang#120764 (Add documentation on `str::starts_with`)
 - rust-lang#120823 (Clarify that atomic and regular integers can differ in alignment)
 - rust-lang#120859 (Loosen an assertion to account for stashed errors.)
 - rust-lang#120865 (Turn the "no saved object file in work product" ICE into a translatable fatal error)
 - rust-lang#120866 (Remove unnecessary `#![feature(min_specialization)]`)
 - rust-lang#120870 (Allow restricted trait impls under `#[allow_internal_unstable(min_specialization)]`)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit ed3b049 into rust-lang:master Feb 10, 2024
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Feb 10, 2024
Rollup merge of rust-lang#120870 - Zalathar:allow-min-spec, r=oli-obk

Allow restricted trait impls under `#[allow_internal_unstable(min_specialization)]`

This is a follow-up to rust-lang#119963 and a companion to rust-lang#120866, though it can land independently from the latter.

---

We have several compiler crates that only enable `#[feature(min_specialization)]` because it is required by their expansions of `newtype_index!`, in order to implement traits marked with `#[rustc_specialization_trait]`.

This PR allows those traits to be implemented internally by macros with `#[allow_internal_unstable(min_specialization)]`, without needing specialization to be enabled in the enclosing crate.
@rustbot rustbot added this to the 1.78.0 milestone Feb 10, 2024
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Feb 10, 2024
Rollup merge of rust-lang#120866 - Zalathar:no-min-spec, r=compiler-errors

Remove unnecessary `#![feature(min_specialization)]`

As of rust-lang#119963 and rust-lang#120676, we can now rely on `newtype_index!` having `#[allow_internal_unstable(min_specialization)]`, so there are a few compiler crates that no longer need to include min-spec in their own crate features.

---

Some of the expansions of `newtype_index!` still appear to require min-spec in the crate features. I think this is because `#[orderable]` causes the expansion to include an implementation of `TrustedStep`, which is flagged with `#[rustc_specialization_trait]`, and for whatever reason that isn't permitted by allow-internal-unstable. So this PR only touches the crates where that isn't the case.
@Zalathar Zalathar deleted the no-min-spec branch February 10, 2024 21:35
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants