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

Suggest const_mut_refs, not const_fn for mutable references in const fn #77136

Merged
merged 2 commits into from
Sep 25, 2020

Conversation

ecstatic-morse
Copy link
Contributor

@ecstatic-morse ecstatic-morse commented Sep 24, 2020

Resolves #77134.

Prior to #76850, most uses of &mut in const fn required involved two feature gates, const_mut_refs and const_fn. The first allowed all mutable borrows of locals. The second allowed only locals, arguments and return values whose types contained &mut. I switched the second check to the const_mut_refs gate. However, I forgot update the error message with the new suggestion.

Alternatively, we could revert to having two different feature gates for this. OP's code never borrows anything mutably, so it didn't need const_mut_refs in the past, only const_fn. I'd prefer to keep everything under a single gate, however.

r? @oli-obk

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Sep 24, 2020
@oli-obk
Copy link
Contributor

oli-obk commented Sep 24, 2020

I would have thought we could remove feature(const_fn) from some tests now, can you check?

@ecstatic-morse
Copy link
Contributor Author

ecstatic-morse commented Sep 24, 2020

I browsed the const_mut_refs tests. It looks like the feature gate test was an OR, not an AND: const_mut_refs turned off everything and const_fn turned off only the type checks, so I don't think there's anything to remove. I've updated the OP; not sure if this changes the calculus at all?

In other news, we need more const_mut_refs tests, since I didn't see anything testing const-qualification of mutably borrowed values.

@oli-obk
Copy link
Contributor

oli-obk commented Sep 24, 2020

@bors r+

@bors
Copy link
Contributor

bors commented Sep 24, 2020

📌 Commit e5e5e64 has been approved by oli-obk

@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 Sep 24, 2020
@ecstatic-morse
Copy link
Contributor Author

@bors rollup

bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 25, 2020
…as-schievink

Rollup of 15 pull requests

Successful merges:

 - rust-lang#75438 (Use adaptive SVG favicon for rustdoc like other rust sites)
 - rust-lang#76304 (Make delegation methods of `std::net::IpAddr` unstably const)
 - rust-lang#76724 (Allow a unique name to be assigned to dataflow graphviz output)
 - rust-lang#76978 (Documented From impls in std/sync/mpsc/mod.rs)
 - rust-lang#77044 (Liballoc bench vec use mem take not replace)
 - rust-lang#77050 (Typo fix: "satsify" -> "satisfy")
 - rust-lang#77074 (add array::from_ref)
 - rust-lang#77078 (Don't use an if guard to check equality with a constant)
 - rust-lang#77079 (Use `Self` in docs when possible)
 - rust-lang#77081 (Merge two almost identical match arms)
 - rust-lang#77121 (Updated html_root_url for compiler crates)
 - rust-lang#77136 (Suggest `const_mut_refs`, not `const_fn` for mutable references in `const fn`)
 - rust-lang#77160 (Suggest `const_fn_transmute`, not `const_fn`)
 - rust-lang#77164 (Remove workaround for deref issue that no longer exists.)
 - rust-lang#77165 (Followup to rust-lang#76673)

Failed merges:

r? `@ghost`
@bors bors merged commit 473ae22 into rust-lang:master Sep 25, 2020
@rustbot rustbot added this to the 1.48.0 milestone Sep 25, 2020
@ecstatic-morse ecstatic-morse deleted the issue-77134 branch October 6, 2020 01:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

#![feature(const_fn)] doesn't work
5 participants