From d7cada17670c03c7029441e17381845bbe8fa3cc Mon Sep 17 00:00:00 2001 From: lcnr Date: Thu, 31 Mar 2022 12:50:53 +0200 Subject: [PATCH] obligation cause: `RepeatVec` -> `RepeatValueCopy` --- compiler/rustc_borrowck/src/type_check/mod.rs | 4 +++- compiler/rustc_middle/src/traits/mod.rs | 11 ++++++----- compiler/rustc_mir_build/src/thir/pattern/mod.rs | 2 +- .../src/traits/error_reporting/suggestions.rs | 2 +- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/compiler/rustc_borrowck/src/type_check/mod.rs b/compiler/rustc_borrowck/src/type_check/mod.rs index 7dc292ffb65..e9fa33f656f 100644 --- a/compiler/rustc_borrowck/src/type_check/mod.rs +++ b/compiler/rustc_borrowck/src/type_check/mod.rs @@ -1899,7 +1899,9 @@ fn check_rvalue(&mut self, body: &Body<'tcx>, rvalue: &Rvalue<'tcx>, location: L ObligationCause::new( span, self.tcx().hir().local_def_id_to_hir_id(def_id), - traits::ObligationCauseCode::RepeatVec(is_const_fn), + traits::ObligationCauseCode::RepeatElementCopy { + is_const_fn, + }, ), self.param_env, ty::Binder::dummy(ty::TraitRef::new( diff --git a/compiler/rustc_middle/src/traits/mod.rs b/compiler/rustc_middle/src/traits/mod.rs index 3d0a0d2a58e..1f18260d915 100644 --- a/compiler/rustc_middle/src/traits/mod.rs +++ b/compiler/rustc_middle/src/traits/mod.rs @@ -236,11 +236,12 @@ pub enum ObligationCauseCode<'tcx> { SizedBoxType, /// Inline asm operand type must be `Sized`. InlineAsmSized, - /// `[T, ..n]` implies that `T` must be `Copy`. - /// If the function in the array repeat expression is a `const fn`, - /// display a help message suggesting to move the function call to a - /// new `const` item while saying that `T` doesn't implement `Copy`. - RepeatVec(bool), + /// `[expr; N]` requires `type_of(expr): Copy`. + RepeatElementCopy { + /// If element is a `const fn` we display a help message suggesting to move the + /// function call to a new `const` item while saying that `T` doesn't implement `Copy`. + is_const_fn: bool, + }, /// Types of fields (other than the last, except for packed structs) in a struct must be sized. FieldSized { diff --git a/compiler/rustc_mir_build/src/thir/pattern/mod.rs b/compiler/rustc_mir_build/src/thir/pattern/mod.rs index 57aec867856..72b597bb13d 100644 --- a/compiler/rustc_mir_build/src/thir/pattern/mod.rs +++ b/compiler/rustc_mir_build/src/thir/pattern/mod.rs @@ -198,7 +198,7 @@ fn lower_pattern_unadjusted(&mut self, pat: &'tcx hir::Pat<'tcx>) -> Pat<'tcx> { let kind = match pat.kind { hir::PatKind::Wild => PatKind::Wild, - hir::PatKind::Lit(ref value) => self.lower_lit(value), + hir::PatKind::Lit(value) => self.lower_lit(value), hir::PatKind::Range(ref lo_expr, ref hi_expr, end) => { let (lo_expr, hi_expr) = (lo_expr.as_deref(), hi_expr.as_deref()); diff --git a/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs b/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs index 505d78d800a..58e002b3360 100644 --- a/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs +++ b/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs @@ -1988,7 +1988,7 @@ fn note_obligation_cause_code( ObligationCauseCode::Coercion { source: _, target } => { err.note(&format!("required by cast to type `{}`", self.ty_to_string(target))); } - ObligationCauseCode::RepeatVec(is_const_fn) => { + ObligationCauseCode::RepeatElementCopy { is_const_fn } => { err.note( "the `Copy` trait is required because the repeated element will be copied", );