add test for treating ExprKind::ConstParam as temp
This commit is contained in:
parent
5fcccd1739
commit
1b5fbe2076
20
src/test/ui/mir/thir-constparam-temp.rs
Normal file
20
src/test/ui/mir/thir-constparam-temp.rs
Normal file
@ -0,0 +1,20 @@
|
||||
// build-pass
|
||||
|
||||
#![feature(adt_const_params)]
|
||||
#![allow(incomplete_features)]
|
||||
|
||||
#[derive(PartialEq, Eq)]
|
||||
struct Yikes;
|
||||
|
||||
impl Yikes {
|
||||
fn mut_self(&mut self) {}
|
||||
}
|
||||
|
||||
fn foo<const YIKES: Yikes>() {
|
||||
YIKES.mut_self()
|
||||
//~^ WARNING taking a mutable reference
|
||||
}
|
||||
|
||||
fn main() {
|
||||
foo::<{ Yikes }>()
|
||||
}
|
22
src/test/ui/mir/thir-constparam-temp.stderr
Normal file
22
src/test/ui/mir/thir-constparam-temp.stderr
Normal file
@ -0,0 +1,22 @@
|
||||
warning: taking a mutable reference to a `const` item
|
||||
--> $DIR/thir-constparam-temp.rs:14:5
|
||||
|
|
||||
LL | YIKES.mut_self()
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: `#[warn(const_item_mutation)]` on by default
|
||||
= note: each usage of a `const` item creates a new temporary
|
||||
= note: the mutable reference will refer to this temporary, not the original `const` item
|
||||
note: mutable reference created due to call to this method
|
||||
--> $DIR/thir-constparam-temp.rs:10:5
|
||||
|
|
||||
LL | fn mut_self(&mut self) {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
note: `const` item defined here
|
||||
--> $DIR/thir-constparam-temp.rs:13:14
|
||||
|
|
||||
LL | fn foo<const YIKES: Yikes>() {
|
||||
| ^^^^^
|
||||
|
||||
warning: 1 warning emitted
|
||||
|
Loading…
Reference in New Issue
Block a user