diff options
| author | bors <bors@rust-lang.org> | 2022-03-24 12:50:00 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-03-24 12:50:00 +0000 |
| commit | 8d8135f003b35c3e109d013b2bed9ee9496da615 (patch) | |
| tree | 85610c6ffbd311c19f153e058ab6f67ca2c06ddc /src | |
| parent | d2df372bca13bb60979c909660e69f2451630e81 (diff) | |
| parent | 19041d995de9e3b2e4f6be46b2d77c0f19c607f7 (diff) | |
| download | rust-8d8135f003b35c3e109d013b2bed9ee9496da615.tar.gz rust-8d8135f003b35c3e109d013b2bed9ee9496da615.zip | |
Auto merge of #94876 - b-naber:thir-abstract-const-changes, r=lcnr
Change Thir to lazily create constants To allow `AbstractConst`s to work with the previous thir changes we made and those we want to make, i.e. to avoid problems due to `ValTree` and `ConstValue` conversions, we instead switch to a thir representation for constants that allows us to lazily create constants. r? `@oli-obk`
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/ui/mir/thir-constparam-temp.rs | 20 | ||||
| -rw-r--r-- | src/test/ui/mir/thir-constparam-temp.stderr | 22 |
2 files changed, 42 insertions, 0 deletions
diff --git a/src/test/ui/mir/thir-constparam-temp.rs b/src/test/ui/mir/thir-constparam-temp.rs new file mode 100644 index 00000000000..cdc5910b36c --- /dev/null +++ b/src/test/ui/mir/thir-constparam-temp.rs @@ -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 }>() +} diff --git a/src/test/ui/mir/thir-constparam-temp.stderr b/src/test/ui/mir/thir-constparam-temp.stderr new file mode 100644 index 00000000000..297102e657e --- /dev/null +++ b/src/test/ui/mir/thir-constparam-temp.stderr @@ -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 + |
