From 1b5fbe20768103ad6dd701314ceb0b57b3176474 Mon Sep 17 00:00:00 2001 From: b-naber Date: Wed, 23 Mar 2022 08:54:07 +0100 Subject: [PATCH] add test for treating ExprKind::ConstParam as temp --- src/test/ui/mir/thir-constparam-temp.rs | 20 +++++++++++++++++++ src/test/ui/mir/thir-constparam-temp.stderr | 22 +++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 src/test/ui/mir/thir-constparam-temp.rs create mode 100644 src/test/ui/mir/thir-constparam-temp.stderr 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() { + 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() { + | ^^^^^ + +warning: 1 warning emitted +